【发布时间】:2016-11-04 23:04:00
【问题描述】:
我在我的代码中使用了 wait() 和 notify(),并且存在这样一种情况,即在另一个线程上的锁定对象上实际调用等待之前,执行可以首先到达 notify()。我在锁定对象中创建了一个标志“isWaitCalled”,如果尚未调用 wait(),则使用它跳过 notify() 调用。这个标志“isWaitCalled”是多余的吗?如果在其中一种情况下等待之前调用 notify() 可以吗? 线程 A:
synchronized (syncObject) {
try {
if (!syncObject.isLoadComplete) {
syncObject.isWaitCalled = true;
syncObject.wait();
}
} catch (Exception ex) {
}
}
线程B:
synchronized (syncObject) {
try {
if (!syncObject.isLoadComplete) {
syncObject.isLoadComplete =true;
if (syncObject.isWaitCalled) {
syncObject.notify();
}
}
} catch (Exception ex) {
}
}
【问题讨论】:
-
如果一棵树倒在森林里,但没有人听到,它会发出声音吗?
-
我也是这么想的。想确认,不想假设。
标签: java multithreading wait notify