只能在Java中使用同步块构建等待/通知机制吗?这意味着使用wait()/ notify()方法创建此机制,但使用同步块,静态字段,易变修改器。
答案 0 :(得分:1)
当然可以,但由于你迫不及待,你将被迫忙于循环:
public class Signal {
private boolean signal;
public void waitForSignal() {
while (true)
sychronized (this) {
if (signal) {
signal = false;
break;
}
}
}
}
public synchronized void notifyWithSignal() {
signal = true;
}
}
原油,但基本上是等待/通知的背后。只是它没有循环等待,而是使用操作系统将CPU交给另一个线程,直到信号变为真。
通过将“signal”声明为volatile并删除同步块,可以完成相同的操作。或者使用AtomicBoolean作为信号。