It is possible to build wait/notify mechanism only with syncronized blocks in Java? It means to create this mechanism with out wait()/notify() methods but using syncronized blocks, static fields, volatile modificator.
问问题
108 次
1 回答
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 交给另一个线程,直到信号变为真。
可以通过将“信号”声明为易失性并删除同步块来完成相同的操作。或者使用 AtomicBoolean 作为信号。
于 2013-05-24T18:40:58.767 回答