我有两个代码块,一个等待另一个通知它。
synchronized(this) {
wait();
}
和
while(condition) {
//do stuff
synchronized(this) {
notify();
}
}
奇怪的是,这样做时并没有等待通知:
synchronized(objectLock) {
objectLock.wait();
}
和
while(condition) {
//do stuff
synchronized(objectLock) {
objectLock.notify();
}
}
我很好奇两组的区别,以及为什么第一组有效而另一组无效。请注意,这两个块以两种不同的方法驻留在两个不同的线程中(如果有帮助的话)。
我希望有人能解释为什么会这样。我编辑了我的问题,所以它会更详细。