我在我的代码中使用了wait()和notify(),有一种情况是执行可以先到达notify(),而另一个线程上的锁对象上实际上并没有调用wait()。我在锁对象中创建了一个名为"isWaitCalled"的标志,并使用它来跳过notify()调用,如果wait()还没有被调用。这个标志"isWaitCalled"是否多余?在某些情况下,在wait之前调用notify()是否可以?
线程A:synchronized (syncObject) {
try {
if (!syncObject.isLoadComplete) {
syncObject.isWaitCalled = true;
syncObject.wait();
}
} catch (Exception ex) {
}
}
ThreadB:
synchronized (syncObject) {
try {
if (!syncObject.isLoadComplete) {
syncObject.isLoadComplete =true;
if (syncObject.isWaitCalled) {
syncObject.notify();
}
}
} catch (Exception ex) {
}
}