我有一個支持方法,應該在執行期間停止,並應等待發生特定的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();
}
我建議使用Observer圖案,其中所述第一servlet將是實現Observable的對象的observer。當發生什麼事情時,第二個servlet會更新observable,並調用setChanged()方法,該方法反過來會通知觀察者(在這種情況下爲您的第一個servlet)。
我猜信號來自另一個線程? – Tudor
否來自另一個servlet。我不是手動創建線程。 – membersound
好的,但servlet在自己的線程上運行正確嗎? – Tudor