相关疑难解决方法(0)

ExecutorService中的awaitTermination"发生在之前执行的任何代码之前"吗?

请帮助理解ExecutorService#awaitTermination(timeout)行为.

我在我的代码中观察情况:

private void shutdownAndAwaitTermination(ExecutorService threadPool){
    threadPool.shutdown(); 
    try {
        if (!threadPool.awaitTermination(threadPoolTimeout, TimeUnit.HOURS)){
            threadPool.shutdownNow(); 
            if (!threadPool.awaitTermination(60, TimeUnit.SECONDS)) {
                logger.warn("Pool did not terminate");
            }
        }
    }
    catch (InterruptedException ie)     {
        threadPool.shutdownNow();
        Thread.currentThread().interrupt();
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,池中的任务是否在同一线程中的shutdownAndAwaitTermination()之后的任何其他调用之前完成?

看看生产中发生了什么,我认为答案是否定的,但我只想了解如何确保在调用shutdownAndAwaitTermination()之后放置的任何代码都将在池中的最后一个任务完成后发生.

谢谢.

java concurrency threadpool threadpoolexecutor

5
推荐指数
1
解决办法
697
查看次数