请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,在syn方法中的线程wait()后状态是WAITING,被唤醒后但还没有拿到cpu资源是BLOCKED,是这样么

正在回答 回答被采纳积分+3

1回答

悟空 2019-09-15 22:47:52

是的,这属于6个状态的特殊情况,从Object.wait()刚被唤醒时,通常不能立刻抢到monitor锁,那就会从WAITING先进入BLOCKED状态,抢到锁后再转换到RUNNABLE状态。


官网对此也有说明:

//img1.sycdn.imooc.com//szimg/5d7e4f1109d94a5a23380376.jpg

https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.State.html#BLOCKED


示意图:

https://img1.sycdn.imooc.com/szimg/5d9c4b5009303ed409940972.jpg

0 回复 有任何疑惑可以回复我~
  • 是先从waiting到runnable再到blocked还是直接从waiting到blocked
    回复 有任何疑惑可以回复我~ 2020-09-20 15:28:15
  • 悟空 回复 崇拜者_ #2
    直接从waiting到blocked
    回复 有任何疑惑可以回复我~ 2020-09-20 23:08:43
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信