如何通知调用者线程ExecutorService已完成任务

时间:2012-05-22 22:55:22

标签: java multithreading concurrency executorservice

从主线程:

executorService.submit(new Runnable() { ... });

现在当Runnable完成执行时,是否有Java的标准方式来通知调用者线程它已经完成执行,而没有创建新的接口/监听器类?

如果信号可以从调用者线程发出,则加分。

3 个答案:

答案 0 :(得分:4)

submit返回Future,提交线程可以在{{}}上调用get来阻止任务完成。

Future<?> future = executor.submit(new Runnable() { ... });
future.get();

答案 1 :(得分:3)

您可以阻止返回的Future对象的get(),或者在其上轮询isDone()方法。或者,您可以使用具有ListenableFuture的google guava库。

答案 2 :(得分:0)

我不确定您的实现以及将同时运行多少线程,因此这可能无效。你可以看一件事是通过调用一个知道如何更新所需UI组件的方法来让runnable自己发出信号。