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