前言:其实线程的状态在操作系统的PCB中就对其进行了描述,但是Java中觉得自带的状态并不是特别好,于是引入了线程在Java中的六种状态。
(1) NEW
安排了工作还未行动,即:Thread对象创建出来了,但是内核的PCB并未创建(还没有真正意义上的创建线程)
(2) TERMINATED
工作完成了,即:内核中的PCB销毁了,但是Thread对象还在(工作完成了)。
(3) RUNNABLE
就绪状态,可以分成 正在工作和即将开始工作,即正在CPU上运行 和 在就绪队列中排队
(4) TIMED_WAITING
一种阻塞状态,按照一定的时间,进行阻塞(sleep/join(time)),时间过后就不会再阻塞
(5) WAITING
和TIMED_WAITING 一样都是表示阻塞,但是其为特殊的阻塞状态(调用wait/join())
(6) BLOCKED
仍和 TIMED_WAITING,WAITING 一样都是表示阻塞,其表示的是 等待锁的时候进入的阻塞状态。
总体来说:上面的六种状态可大致分为:就绪+阻塞。
观察:NEW 、 RUNNABLE 、 TERMINATED 状态的转换
观察:NEW 、 TIMED_WAITING 、 TERMINATED 状态的转换