gpt4 book ai didi

java - 当所有任务完成时,执行器服务如何发出信号?

转载 作者:行者123 更新时间:2023-12-01 11:43:22 24 4
gpt4 key购买 nike

我读了这个post

我想用所有任务结果填充一个数组

但我只想在所有 Future 都有值时(也就是所有任务都有结果)才调用某个方法。

有没有办法写这样的屏障?

最佳答案

对于执行器服务,您需要将其关闭并等待其终止。

executorService.shutdown();
executorService.awaitTermination(1,TimeUnit.HOUR);

关闭不会立即停止执行器,但会阻止它执行新任务并允许完成已提交的任务。

awaitTermination 会阻塞调用线程,直到处理完执行器中的整个任务队列为止。

另一种方法是使用 ExecutorCompletionService 来代替,并根据提交的任务数量调用 take() 次数。每个 take 都会阻塞,直到一个 future 完成(或者失败)。

关于java - 当所有任务完成时,执行器服务如何发出信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29328838/

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