【发布时间】:2015-05-11 21:09:57
【问题描述】:
我需要调用一些服务并知道它们何时完成,以便我可以发送通知:
...
someService.doStuff();
otherService.doStuff();
//all services finished
sendOutNotification();
问题在于,其中一些服务异步启动它们的工作并立即从 doStuff() 返回,而不是等待这些工作完成。由于我当前的线程只是调用这些服务方法,而不是拥有这些服务正在创建和触发的任何实际线程管理执行程序,因此似乎无法知道 doStuff() 触发的线程何时完成。
有没有办法解决这个问题?或者这里是否存在设计问题链接异步执行而无需在任何级别(顶部除外)等待?
【问题讨论】:
-
它是异步的,因此您需要一个 callbank 函数,该函数可以在作业完成时触发。或者进入轮询循环并让作业在完成后设置一个标志。
-
API 应该提供一种通知操作完成的方法。
标签: java concurrency java.util.concurrent