zoukankan      html  css  js  c++  java
  • 线程

    java.lang.Thread 线程类
      方法
        String getName()获取线程名称
        static Thread currentThread()获取当前线程对象
        void setName(String name)设置线程名称,注意主线程的名称不能设置
        static void sleep(long millis)休眠

        getPriority()得到当前线程的优先级
        setPriority()设置当前对象的优先级    //默认是5

    开启新线程
      A:继承Thread(),重写线程体run(),调用start()方法
      B:定义一个实现类实现Runnable接口
        重写线程任务
        创建实现类对象
        创建线程对象Thread(Runnable r)
        start()
      B方法的好处
        避免了单继承的局限性
        降低了耦合性(创建线程对象和线程任务分开)

    (必须保证锁对象的唯一性 A:只创建一个对象;B:用static)
    线程安全隐患:当多个线程同时操作一个数据时容易产生错误
    线程同步 (原理:有锁的线程执行,没锁的线程等待)
        1:同步代码块
          synchronized(任意对象){
              可能出现问题的代码
          }
        2:同步方法
          在方法的访问权限修饰符后 返回值类型之前添加一个关键字synchronized
          同步方法的锁是this,当前对象
          静态同步方法的锁是:类名.class (static优先于对象存在,所以里面不会有this)

    因为锁可以是任意对象,所以这两个方法封装到Object中
        wait():当前线程进行等待(一定要有其它线程叫醒它才会继续执行)
        notify():唤醒其它线程

    线程状态
        A:新建 NEW
        B:运行 RUNNABLE
        C:受阻塞 BLOCKED   //可以执行,但是cpu资源不够分配
        D:睡眠 TIMED WAITING   //自己放弃执行的资格,同时自己醒
        E:等待 WAITING      //自己陷入等待,别人叫醒
        F:消亡 TERMINATED

  • 相关阅读:
    利用 Python 写一个颜值测试小工具
    手敲代码太繁琐?“拖拉拽”式Python编程惊艳到我了
    一道 3 行代码的 Python面试题,我懵逼了一天
    这几个冷门却实用的 Python 库,我爱了!
    如何利用Python在网上接单,兼职也能月薪过万
    薪资高,福利好,会Python的人就是这么豪横!
    js_事件——鼠标滚轮事件
    CSS3_浮动造成的的li反向排列
    CSS3_-webkit-font-smoothing字体抗锯齿渲染
    解决a标签下的image元素下方的空白
  • 原文地址:https://www.cnblogs.com/chonglchong/p/6671114.html
Copyright © 2011-2022 走看看