首先,我必須說我對API java.util.concurrent很陌生,所以也許我所做的是完全錯誤的。這是使用java.util.concurrent.FutureTask的好方法嗎?
我想要做什麼?
我有一個基本上運行2分別處理(稱爲myFirstProcess,mySecondProcess)的Java應用程序,但這些處理必須在同一時間運行。
所以,我想這樣做:
public void startMyApplication() {
ExecutorService executor = Executors.newFixedThreadPool(2);
FutureTask<Object> futureOne = new FutureTask<Object>(myFirstProcess);
FutureTask<Object> futureTwo = new FutureTask<Object>(mySecondProcess);
executor.execute(futureOne);
executor.execute(futureTwo);
while (!(futureOne.isDone() && futureTwo.isDone())) {
try {
// I wait until both processes are finished.
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
logger.info("Processing finished");
executor.shutdown();
// Do some processing on results
...
}
myFirstProcess和mySecondProcess是實現Callable<Object>
類,並在所有的處理是在call()方法制成。
它工作得很好,但我不確定這是否正確。 是做我想做的事的好方法嗎?如果沒有,你可以給我一些提示,以加強我的代碼(並儘可能保持簡單)。
你的條件是缺少一個閉括號:) – 2009-02-11 11:32:35