采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,如题,请老师帮忙解释一下,虽然也去网上了解过,但还是特别理解
因为每个对象都关联着一个monitor entry,wait、notify/notifyAll,分别为主动释放monitor,唤醒争抢monitor的线程。当然这些方法只能在synchronized的作用域当中使用,因为没有参与monitor的争夺就无从谈起wait和notify。底层这么干,上层代码就有对应的现象了。详情可以用jstack <pid> 观察线程争夺monitor的情况。
感谢同学的给力回答
同学好,我理解的话,JAVA提供的锁是对象级的而不是线程级的(比如在讲解synchronized的时候,咱们也介绍了对象锁),每个对象都有锁,通过线程获得。而对象具备释放锁、唤醒等待对象锁的方法,属于对象的行为,这样就比较合理,而用Thread的话指定起来就比较模糊,不清楚是哪个线程的行为。
好的,理解了,谢谢老师。
登录后可查看更多问答,登录/注册
招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航
1.8k 27
2.7k 22
1.3k 15
1.4k 14
1.3k 14