Java中的线程状态
Java中线程的状态
New:新创建对象,还没执行start()方法RUNNABLE:就绪态和运行状态。BLOCKED:表示线程等到获取锁时候的状态。WAITING:处于这种状态的线程不会被分配CPU执行时间,它们要等待被显式地唤醒。TIMED_WAITED:与TIMED_WAITED不同的是,这个到达一定时间会被自动唤醒。TERMINATED:线程已经执行完毕
线程的生命周期
- 线程被实例化,线程的状态即为
NEW - 线程调用
start()方法,线程变成RUNNABLE。其中RUNNABLE分为运行态和就绪态。- 线程执行·yield()
方法,从运行态->就绪态`。其实就是让出计算资源。 - 系统重新分配计算资源,线程从
就绪态->运行态。
- 线程执行·yield()
- 等待其他线程某些操作。
- 由
Object.wait()、Thread.join()、进入WAITING状态。 - 由
Object.notify、Object.notifyAll()重回RUNNABLE状态。
- 由
- 线程进入进入指定时间的等待。
- 由
Thread.sleep(long)、Object.wait(long)、Thread.join(long)进入TIMED_WAITED - 由
Object.notify、Object.notifyAll()重回RUNNABLE状态。
- 由
- 线程遇到同步锁
- 线程等待进入
sychronized方法、块的时候进入BLOCKED状态。 - 线程获得锁,回到
RUNNABLE
- 线程等待进入
- 线程执行完成,变成
TERMINATED状态。
浙公网安备 33010602011771号