线程的几种状态
在操作系统中,有一套状态的描述,java自己也有一套状态描述
1.NEW 初始
创建一个Thread对象,但是PCB还没有创建,也就是还没有真的创建线程。(Thread对象虽然和内核中的PCB时一一对应的,但是生命周期不桶)。
RUNNABLE 运行中
在cpu上执行。
TIMED_WAITING 超时等待
有时间限制的进行sleep堵塞
.WAITING 等待
是特殊的堵塞状态,可以调用wait,join
BLOCKED 阻塞
等待锁的时候,进入阻塞状态
.TERMINATED 终止
销毁内核中的PCB,Thread对象还在(生命周期不一样)。
线程几种状态的分别含义
1.NEW 初始
创建一个Thread对象,但是PCB还没有创建,也就是还没有真的创建线程。(Thread对象虽然和内核中的PCB时一一对应的,但是生命周期不桶)。
RUNNABLE 运行中
在cpu上执行。
TIMED_WAITING 超时等待
有时间限制的进行sleep堵塞
.WAITING 等待
是特殊的堵塞状态,可以调用wait,join
BLOCKED 阻塞
等待锁的时候,进入阻塞状态
.TERMINATED 终止
销毁内核中的PCB,Thread对象还在(生命周期不一样)。
线程状态的切换条件
BLOCKED 表示等待锁,进入堵塞状态,WAITING和TIMED_WAITING等待其他线程发来通知
TIMED_WAITING线程在等待唤醒,但是有时间限制,WAIT线程是没有时间限制的