我有一个支持方法应该在执行之间停止,并且应该等待设置一个特定的flag
或event
。
目前我polling
只是application-scoped variable
。如果它被任何其他请求设置,则等待方法可以继续。
但polling
是正确的方式,还是更好?
答案 0 :(得分:3)
希望我明白这一点。轮询是低效的,因为它浪费CPU周期。您可以将对象用作信号:
Object signal = new Object();
volatile boolean shouldWait = true;
在等待方法中:
// ...
synchronized(signal) {
while(shouldWait) {
signal.wait();
}
}
在信令代码中:
synchronized(signal) {
shouldWait = false;
signal.notify();
}
答案 1 :(得分:2)
我建议使用Observer模式,其中第一个servlet是实现observer的对象的Observable。当某些事情发生时,第二个servlet会更新observable,并调用setChanged()方法,而setChanged()方法又会通知观察者(在这种情况下你的第一个servlet)。