线程6种状态的转换
2021-08-18 10:01:52 3 举报
线程6种状态的转换
作者其他创作
大纲/内容
Blocked阻塞
1.线程的状态是需要按照箭头方向来走的,比如线程从 New 状态是不可以直接进入 Blocked 状态的,它需要先经历 Runnable 状态2.线程生命周期不可逆:一旦进入 Runnable 状态就不能回到 New 状态;一旦被终止就不可能再有任何状态的变化3.所以一个线程只能有一次 New 和 Terminated 状态,只有处于中间状态才可以相互转换。
Runnble可运行
进入synchronized没有拿到锁
Locksuppot.prarkNanos(x)
sleep(x)
New新建
t.start
获取到锁 monitor
notifynotifyAll
notify或 notifyAll此时需要拿monitor
wait
Locksuppot.prark
Locksuppot.prarkUntil(x)
join
Waiting等待
线程正常退出或异常
终止Terminated
Timed Waiting超时等待
LockSupport.unpark()join线程结束或中断
LockSupportunpark()join线程结束中断
0 条评论
下一页