相关疑难解决方法(0)

这是一个使用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
    ...
}
Run Code Online (Sandbox Code Playgroud)

myFirstProcessmySecondProcess是实现的类Callable<Object>,并且在call()方法中进行所有处理.

它工作得很好,但我不确定这是正确的方法.是一个做我想要的好方法吗?如果没有,你能给我一些提示来增强我的代码(并尽可能保持简单).

java concurrency multithreading futuretask

37
推荐指数
5
解决办法
5万
查看次数

标签 统计

concurrency ×1

futuretask ×1

java ×1

multithreading ×1