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

来源:7-3 notify方法

qq_啦啦啦啦啦_5

2019-09-15

写回答

1回答

悟空

2019-09-15

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


官网对此也有说明:

//img.mukewang.com/szimg/5d7e4f1109d94a5a23380376.jpg

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


示意图:

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

0
2
悟空
回复
崇拜者_
直接从waiting到blocked
2020-09-20
共2条回复

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 939 问题

查看课程