请帮助理解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()之后放置的任何代码都将在池中的最后一个任务完成后发生.
谢谢.