0
if (isDownloadLogRequired) {
ExecutorService pool = Executors.newFixedThreadPool(THREAD_POOL_SIZE);
for (HostGenericServiceTicket hostGenericServiceTicket : hostGenericServiceTickets) {
pool.submit(new DiagnosticLogDownloader(logNames, downloadTo, hostGenericServiceTicket));
}
pool.shutdown();
try {
pool.awaitTermination(downloadTimeout, TimeUnit.SECONDS);
} catch (InterruptedException e) {
System.err.println(MessageFormat.format("{0}: Reason: {1}", e.getClass()
.getSimpleName(), e.getMessage()));
}
}
如果downloadTimeout设置为180秒线程应该被终止并且程序应该正确结束?await在线程池终结并不会终止线程池
不过,为什么是这个样子这个API的说明? - 布尔awaitTermination(长超时, TIMEUNIT单元) 抛出InterruptedException的 \t阻塞,直到所有任务已经完成了关机请求之后执行,或在超时 \t发生时,或当前线程中断,无论哪个首先发生。 – Manav
是的,这正是我所说的“以先发生者为准”。它实际上并没有做任何事情来终止线程。 –
那么程序应该在超时之后向前移动,并且结束正确的时间?......它应该只阻止超时量秒,然后应该向前移动......并且当程序死亡时,所有线程都应该死掉。 。我的意思是,在我的情况下,超时发生在第一位......所以代码在这次调用中没有更多的阻止,并向前移动? – Manav