thread.state
枚举了6种状态,对应操作系统线程的7种状态
枚举把 就绪 ready 和 运行 Running 合并成 runnable 可运行
--------------------------------
1.NEW 新建状态
通过 new 创建了一个线程对象
--------------------------------
2.READY 就绪状态
调用了线程的 start(),该线程进入可运行线程池,等待分配 cpu
---------
阻塞状态 --> 就绪状态
拿到锁之后
IO阻塞结束
---------
运行状态 --> 就绪状态
当前线程的执行时间片用完了
调用 yield() 方法,释放 cpu
---------
等待状态 --> 就绪状态
等待的线程被其他线程 notify() / notifyAll() 唤醒
对其他线程 join() 操作结束
locksupport.unpark()
---------
限时等待状态 --> 就绪状态
调用 join(long) 方法,其他线程结束之后
等待的线程被其他线程 notify()/notifyAll() 唤醒
超时时间到 sleep(long) / wait(long) / join(long) / parkNanos() / parkUntil()
-----------------------
3.RUNNING 运行状态
就绪状态的线程被线程调度程序选中后,分配 CPU,进入 run()
-----------------------
4.BLOCKED 阻塞状态 - 释放 cpu, 随时可能转就绪
运行的线程获取锁失败, 进入锁池
IO 阻塞
-----------------------
5.WAITING 等待状态 - 释放 cpu,需要被唤醒才会转就绪
调用了 wait(),进入等待池
调用了 join()
locksupport.park()
-----------------------
6.TIMED_WAITING 限时等待状态 - 指定时间内没有被唤醒,就被系统自动唤醒
运行的线程调用了 sleep(long) wait(long) join(long) parkNanos() parkUntil()
-----------------------
7.TERMINATED 终止状态
线程执行完了或异常终止
-----------------------
Java 线程的状态
最新推荐文章于 2024-09-30 10:21:58 发布