线程总结


 线 程 :
    1,不能脱离进程执行
    2,线程用来执行代码
    3,线程可以同时运行,多个线程可以同时执行代码

 cpu : cup 在同一时刻只能执行一段代码
    线程1:指令 --> 调度 --> 访问资源
    线程2:指令 --> 调度 --> 访问资源
    
    
   【线程用来执行代码,
    执行run方法中代码
    线程执行完run方法代码会停止
    线程凭运气执行.
    多段代码同时执行】

线程的生命周期 : 背
    1,新建状态 :
    1,继承 Thread 重写run
    2,My3 implements Runnable
       Runnable ru = new My3();
       Thread t = new Thread(ru);
    2,就绪状态 :
    线程.start();
    可以开始执行代码,差cup的执行权限
    3,运行状态 :
    随机获得了cpu执行权限
    正在执行run方法中的代码
    时间片(1毫秒)
      阻塞状态 :(线程不执行)
       1,挂起
        sleep(100);
        join();
        yield()
       2,锁池等待
        [当前线程]执行加锁的代码时,锁被其他线程拿走了
        那么[当前线程]就会去[锁池等待]

        当其他线程把加锁的代码执行完毕以后会自动释放锁,
        [当前线程]会回到就绪状态.
       3,等待池等待
        锁对象.wait();
        notifyAll();
        interrupt();
        都是到锁池等待

    4,死亡状态 :
        run方法执行完毕
      stop()
    jvm 强制关闭


yield();只会给优先级高的让步
锁池等待:加锁的代码--》进入到锁池等待--》锁还回来

interrupt:
isinterrupted:清空标志位

setDemon(true):
设置守护线程 后台线程

*【多个线程】 操作【同一个数据】
  会涉及到线程安全问题
   

posted @ 2019-12-05 11:21  下饭  阅读(264)  评论(0编辑  收藏  举报