关于notify的使用场景

来源:8-7 notify和notifyall的区别

YogurtJ

2020-02-08

老师您好,我看网上有提到说,wait, notify, notifyAll 这三个函数都是要在Synchronized代码块中去使用的

关于wait方法需要在Synchronized块中去使用我可以理解,因为wait()需要释放获得的对象锁,所以必须要先在Synchronized块下去拥有锁

而关于notify和notifyAll方法,根据祥仔的讲解,他们只是使得处于等待池的线程进入锁池去竞争获取锁的机会。

那就算不在Synchronized块下面,不是也应该可以调用该锁对象的notify方法,让该锁对象中处于等待池的线程进入锁池去竞争获取锁的机会嘛?

所以notify和notifyAll方法是否必须使用在Synchronized块下面呢?

希望祥仔可以帮忙解惑~,感谢!

写回答

2回答

翔仔

2020-02-08

同学好,同学其实可以直接动手试试,就会发现notify和notifyall也都要放在synchrozined里, 这两个都是通知其他线程锁已释放,要是都没有获取,通知了也没有意义了


0
1
YogurtJ
非常感谢!
2020-02-11
共1条回复

4566413851

2020-02-11

同学,你这么多问题

0
0

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

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

8427 学习 · 1870 问题

查看课程