public void shutdown() {
final ReentrantLock mainLock = this.mainLock;
mainLock.lock();
try {
checkShutdownAccess();
advanceRunState(SHUTDOWN);
interruptIdleWorkers();
onShutdown(); // hook for ScheduledThreadPoolExecutor
} finally {
mainLock.unlock();
}
tryTerminate();
}
jstack [-F] [-l] [-m] <pid>
pool.shutdown();
try {
boolean poolTermination = pool.awaitTermination(5, TimeUnit.HOURS);
System.out.println(poolTermination);
if (! poolTermination) {
pool.shutdownNow();
if (!pool.awaitTermination(5, TimeUnit.MINUTES))
System.err.println("Executor service did not terminate. " + Instant.now());
}