我不能使用shutdown()
and awaitTermination()
因为在等待时,新任务可能会被添加到 ThreadPoolExecutor 中。
因此,我正在寻找一种方法来等待 ThreadPoolExecutor 清空其队列并完成所有任务,而不会阻止在此之前添加新任务。
如果有什么区别的话,这是针对 Android 的。
Thanks
Update:许多周后,在重新审视此问题后,我发现在这种情况下,修改后的 CountDownLatch 对我来说效果更好。我会保留答案,因为它更适用于我提出的问题。
如果您有兴趣了解某个任务或某批任务何时完成,您可以使用ExecutorService.submit(Runnable)
。调用该方法会返回一个Future
可以放入一个对象Collection
然后你的主线程将迭代调用Future.get()
为每一个。这将导致您的主线程停止执行,直到ExecutorService
已经处理了所有的Runnable
tasks.
Collection<Future<?>> futures = new LinkedList<Future<?>>();
futures.add(executorService.submit(myRunnable));
for (Future<?> future:futures) {
future.get();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)