Wait & Notify
WN是一种同步机制,更是一种通信机制,它必须与 同步锁结合使用。因为Wait-Notify本身存在race condition。
但是这不得不让我们思考WN机制得必要性:1)wait()与sleep()在对待已获取得lock时不同,前者会在操作之前自动放弃lock;2)wait在于等待某事物得出现,等待条件没有满足当然可以等待
没有同步得WN可能得导致RC,举例如下:
1)Thread1测试条件,不满足,需要等待;
2)Thread2设定此条件
3)Thread2调用notify()
4)Thread1调用wait()等待
其结果是Thread1永远等待
另外:wait()和nitify()方法应与Lock对象保持一致。
举例:
wait():
synchronized (object){
if (flag){
object.wait()
}
else{
...
}
}
notify():
synchronized (object){
if (!flag){
object.notify();
}
else{
...
}
}

被折叠的 条评论
为什么被折叠?



