gpt4 book ai didi

Java使用另一个线程检查线程的状态

转载 作者:行者123 更新时间:2023-12-01 07:11:41 25 4
gpt4 key购买 nike

我有一个程序,其中一堆线程执行某些任务。我想知道所有这些线程何时完成,以便我可以利用它们的结果做一些其他事情。我不想使用诸如 Thread.join 之类的东西。我更喜欢的是另一个线程检查所有这些线程,当它看到它们完成时,它会执行一些特殊任务。关于如何做到这一点有什么想法吗?

最佳答案

实际上,阻塞更容易实现,更可靠,并且不会引入任何额外的开销/延迟。如果您不想使用 join(),请考虑 CountDownLatch ,它允许您等待一组线程。

另一种更令人愉快的方法是 ExecutorService轻质包裹ExecutorCompletionService .

这两种方法都可以以非阻塞方式使用,例如只是偷看而不是阻塞并等待结果。但为了不浪费 CPU 周期,有一个单独的后台线程阻塞并等待结果,并在所有工作线程完成后立即发送一些事件。

或者让每个工作线程在完成时发送一个事件。一旦接收到的事件数量达到启动的工作线程数量,接收这些事件的对象就会知道处理已完成。与ListenableFuture从 Guava 中,您甚至可以避免额外的看门狗线程。

关于Java使用另一个线程检查线程的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13000446/

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