【发布时间】:2015-08-28 14:27:45
【问题描述】:
我在 Java Web 服务器应用程序 中使用ExecutorService 以并行方式执行一些计算任务,然后使用awaitTermination() 调用shutdown() 以等待所有任务完成。整个计算有时可能需要几十分钟。
事情是awaitTermination() 方法阻塞主线程直到超时(或中断)但我只想启动任务并立即响应客户端和之后所有任务的竞争都会关闭服务(遵循始终关闭线程池的约定)。
所以我的问题是,有没有一种方法可以在所有任务完成后得到通知,以便我可以调用shutdown() 方法?听众什么的..
谢谢!
【问题讨论】:
-
在新线程中调用 awaitTermination()?
-
这或多或少是以下问题的重复:stackoverflow.com/questions/826212/…
-
@VGR 能不能详细点?我没明白你的意思。
-
@Supermartzin 创建一个 Runnable,其
run()方法调用 awaitTermination()。将该 Runnable 传递给new Thread并调用该线程的 start() 方法。
标签: java multithreading web-applications executorservice