我在仿真系統,其中在每個時間步長,我必須模擬許多型號。我用了一個FixedThreadPool來加速計算:現在java的重用執行
ExecutorService executor = Executors.newFixedThreadPool(nThread);
for (Model m : models) {
executor.execute(m.simulationTask());
}
executor.shutdown();
while (! executor.awaitTermination(10, TimeUnit.MINUTES)) {
System.out.println("wait");
}
,執行人不能調用shutdown()
後用於新任務。有沒有辦法重置執行程序,所以我可以在下一個模擬步驟中重用現有的執行程序(及其線程)?
在進入下一步之前,您尚未展示如何等待所有任務完成。 – dogbane 2012-01-27 17:10:33
@dogbane - 'invokeAll'等待所有任務完成。 – Perception 2012-01-27 17:12:44
,因爲他正在使用'execute(Runnable)',它沒有返回值,我們可以去'Callable'也許? –
mzzzzb
2012-10-20 05:08:26