其他分享
首页 > 其他分享> > 线程的状态与调度

线程的状态与调度

作者:互联网

在这里插入图片描述

  1. 当我们使用new关键字新建一个线程,这个时候线程就进入了新建状态(New),也就是图中未启动状态;
  2. 调用start方法启动线程,这个时候就进入了可运行状态,也就是就绪状态(Runnable);
  3. 就绪状态获取了CPU资源,开始执行run方法,就进入了运行状态(Running);
  4. 阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。阻塞的情况分三种;
    • 等待阻塞:运行的线程执行wait()方法,JVM会把该线程放入等待池中。(wait会释放持有的锁);
    • 同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池中;
    • 其他阻塞:运行的线程执行sleep()join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。(注意,sleep是不会释放持有的锁);
  5. 死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。

标签:状态,调度,sleep,线程,阻塞状态,就绪,运行
来源: https://blog.csdn.net/qq_45783660/article/details/114646441