看到各种锁定相关的问题和(几乎)总是找到“循环,因为虚假的唤醒”术语1我不知道,有没有人经历过这种类型的唤醒(假设一个像硬件/软件环境)。
我知道术语“虚假”意味着没有明显的原因,但是什么可能是这样的事件的原因?
(1注:我不是在质疑循环的做法。)
编辑:帮助问题(对于喜欢代码示例的用户):
如果我有以下程序,我运行它:
public class Spurious {
public static void main(String[] args) {
Lock lock = new ReentrantLock();
Condition cond = lock.newCondition();
lock.lock();
try {
try {
cond.await();
System.out.println("Spurious wakeup!");
} catch (InterruptedException ex) {
System.out.println("Just a regular interrupt.");
}
} finally {
lock.unlock();
}
}
}
我能做什么来唤醒这个等待,而不是永远等待一个随机事件?