停止方法执行并等待事件?

时间:2012-08-22 06:59:17

标签: java java-ee servlets

我有一个支持方法应该在执行之间停止,并且应该等待设置一个特定的flagevent

目前我polling只是application-scoped variable。如果它被任何其他请求设置,则等待方法可以继续。

polling是正确的方式,还是更好?

2 个答案:

答案 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)。