0
我有以下問題:如何等待多個聽衆超時
主線程中運行我的應用程序的代碼(即是被稱爲幾次每秒),並在某些時候它通知在執行特定操作之前聽衆列表。聽衆然後執行操作以從外部來源收集數據,其中一些操作是耗時的。
現在,一方面我想給每個聽者一個機會,在我繼續運行主線程之前完成它的工作(因爲數據可能會在操作完成後丟失或更改),以及另一方面,我需要將整個通知 - 收集過程限制到一定的超時時間,以便保持合理的行動流程。
無論如何,我希望任何聽衆都沒有時間去完成它的工作來繼續。
一些示例代碼:
public class ExampleTimeoutNotifier {
private static ArrayList<ExampleTimeoutNotifierListener> listeners;
private static int timeOutInMillis;
public static void main(String[] args) {
timeOutInMillis = Integer.parseInt(args[0]);
// ... the following code is being called repeatedly on the main thread:
// How to limit the process timeout?
for (ExampleTimeoutNotifierListener l : listeners) {
l.collectBeforeAction();
}
// Do the action...
}
public interface ExampleTimeoutNotifierListener {
public void collectBeforeAction();
}
}
也許你應該考慮同步的,如果我明白你的意思。這裏http://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html – CME64
@ CME64你能解釋一下這可以幫到什麼嗎?我沒有併發問題,也不關心鎖定任何對象或數據。 – Elist
這就是我從你的陳述中理解的「我想讓每個聽衆有機會在我繼續運行主線程之前完成它的工作(因爲數據可能會在操作完成後丟失或更改)」,請糾正我我錯了 – CME64