线程状态装换图中进入阻塞的条件怎么理解?

来源:8-10 前述方法及线程状态总结

nightji

2019-02-15

老师,你好。8.10节中1分32秒的线程状态的图中的进入阻塞状态的条件是不是有问题,之前在8.5节的时候说进入阻塞状态是因为进入同步代码块,这张图里的条件是等待用户输入或者Thread.sleep。这怎么理解?

写回答

1回答

翔仔

2019-02-16

同学好,线程在等待锁释放或者在没执行完放弃CPU时间片等待下次执行的时候,都会进入阻塞状态。

阻塞的情况分三种:
    (01) 等待阻塞 -- 通过调用线程的wait()方法,让线程等待某工作的完成。
    (02) 同步阻塞 -- 线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态。
    (03) 其他阻塞 -- 通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。

0
1
nightji
非常感谢!
2019-02-16
共1条回复

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程