gpt4 book ai didi

java - 如何在不关闭 Executor 的情况下等待 ThreadPoolExecutor 中的所有任务完成?

转载 作者:IT老高 更新时间:2023-10-28 13:24:27 26 4
gpt4 key购买 nike

我不能使用 shutdown()awaitTermination() 因为它可能会在等待时将新任务添加到 ThreadPoolExecutor。

所以我正在寻找一种方法,等待 ThreadPoolExecutor 清空它的队列并完成它的所有任务,而不停止在此之前添加新任务。

如果有什么不同,这适用于 Android。

谢谢

更新:很多周后,我重新审视了这个,发现修改后的 CountDownLatch 在这种情况下对我来说效果更好。我会保留答案,因为它更适用于我的问题。

最佳答案

如果您想知道某个任务或某批任务何时完成,您可以使用ExecutorService.submit(Runnable)。调用此方法会返回一个 Future 对象,该对象可以放入一个 Collection 中,然后您的主线程将在调用 Future.get() 时对其进行迭代每一个。这将导致您的主线程暂停执行,直到 ExecutorService 处理完所有 Runnable 任务。

Collection<Future<?>> futures = new LinkedList<Future<?>>();
futures.add(executorService.submit(myRunnable));
for (Future<?> future:futures) {
future.get();
}

关于java - 如何在不关闭 Executor 的情况下等待 ThreadPoolExecutor 中的所有任务完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3929361/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com