💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] # 线程状态 线程处于下列状态之一 ~~~ * NEW 至今尚未启动的线程处于这种状态 * RUNNABLE 正在java虚拟机中执行的线程处于这种状态 * BLOCKED 受阻塞并等待某个监视器锁的线程处于这种状态 * WAITING 无限期的等待另一个线程来执行某一特定操作的线程处于这种状态 * TIMED_WAITING 等待另一个线程来执行取决于指定等待时间的操作的线程处于这种状态 * TERMINATED 已退出的线程处于这种状态 ~~~ ![](https://box.kancloud.cn/f72a10ac97882247784f2df0255c08ff_766x432.png) ![](https://box.kancloud.cn/3637b814eabc3a4fcbe3f62964e2ed10_913x677.png) ![](https://box.kancloud.cn/63da8d66547189460e5e1b171d2d88d0_1040x511.png) ![](https://box.kancloud.cn/e84c5ddfba0d7b3eb45d64a15953e7dc_1334x547.png) * 新建状态(New): 新创建了一个线程 * 就绪状态(Runnable): 线程对象创建后,其他线程调用了该对象的start()方法,该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权 * 运行状态(Running): 就绪状态的线程获取了CPU,执行程序代码 * 阻塞状态(Blocked): 阻塞状态是线程因为某种原因放弃CPU使用,暂时停止运行.直到线程进入就绪状态,才有机会转到运行状态 * 等待阻塞:运行的线程执行wait()方法,JVM会把该线程放入等待池中 * 同步阻塞: 运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池中 * 其他阻塞: 运行的线程执行sleep()或join()方法,或者发出了I/O请求时,JVM会把该线程设置为阻塞状态,当sleep()状态超时,join()等待线程终止或者超时,或者I/O处理完毕时,线程重新转入就绪状态 * join:并行变串行,必须在start以后执行 * wait(),sleep的区别;wait释放锁,sleep不释放锁 * 死亡状态(Dead): 线程执行完了或者因异常退出了run()方法,该线程结束生命周期 # 线程调度(抢占式) * 优先级 * wait(), sleep(), join()