如何在线程关闭后重用执行程序对象

时间:2015-03-29 02:17:30

标签: java multithreading executorservice threadpoolexecutor executor

我有一个并行处理数据块的Java 7程序,目前我使用执行程序服务API来创建线程:

pool = Executors.newFixedThreadPool(size > 0 ? size : THREAD_MAX);

然后我等待所有线程完成:

    try {
        pool.shutdown();
        // TODO 60 seconds sufficient to process a route?
        pool.awaitTermination(60L, TimeUnit.SECONDS);
    } catch (InterruptedException e) {
        e.printStackTrace();
        pool.shutdownNow(); // TODO consider rerunning handleHashes!
    } finally {
        release();
    }

但是一旦终止发生,我需要重新实例化执行程序。在处理完上一块数据之后,我更愿意重用已创建的线程。这样可以让我更容易分析。

.shutdown()之后如何重用Executor对象及其中的线程而不是重新实例化?

或许,是否有第三方Executor API具有此功能?

1 个答案:

答案 0 :(得分:1)

也许您可以重构您的程序,以便处理线程不会关闭。您的父线程提供要处理的子线程数据。他们处理它并等待更多数据。不要在数据进程之间杀死线程或关闭池。