这是使用java.util.concurrent.FutureTask的好方法吗?
首先,我必须说我对API java.util.concurrent很陌生,所以也许我正在做的事情是完全错误的。
我想做什么?
我有一个Java应用程序,基本上运行2个单独的处理(称为myFirstProcess,mySecondProcess),但这些处理必须同时运行。
所以,我试图这样做:
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 是实现 的类,它们的所有处理都是在 call() 方法中进行的。Callable<Object>
它运行良好,但我不确定这是正确的方法。做我想做的事是个好方法吗?如果没有,你能给我一些提示来增强我的代码(并且仍然尽可能保持简单)。