gpt4 book ai didi

java - 如何计算java中完成的线程数而不轮询线程状态

转载 作者:行者123 更新时间:2023-12-02 00:39:31 25 4
gpt4 key购买 nike

在Java程序中,我必须启动n个线程,每个线程执行一个操作。所有这些线程继续并行运行。我必须监视已完成操作的线程数,以便以百分比标记操作的进度。

我能想到的唯一方法是轮询整个线程数组并不断检查它们的状态,除非所有节点都已完成执行。然而,这是对CPU的浪费,他们还有其他可能的方法来实现这一点吗?

最佳答案

简单。让每个线程(或每个线程的 Runnable)在完成时增加一个共享的 AtomicInteger 实例。

其他替代方案包括:

  • 使用SemaphoreCountdownLatch
  • 使用回调;例如使用事件和事件监听器
  • 使用wait()notify()
<小时/>

但是要小心。如果您使用此计数器来确定所有线程是否已完成,您还需要处理线程由于未捕获的异常而终止的情况。您可以使用未捕获的异常处理程序来做到这一点。

关于java - 如何计算java中完成的线程数而不轮询线程状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6772329/

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