关于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回答
-
同学好,同学其实可以直接动手试试,就会发现notify和notifyall也都要放在synchrozined里, 这两个都是通知其他线程锁已释放,要是都没有获取,通知了也没有意义了
012020-02-11 -
4566413851
2020-02-11
同学,你这么多问题
00
相似问题
Volatile的应用场景
回答 1
intern在什么真实场景下能用到?
回答 1