gpt4 book ai didi

java - 如何判断线程是否已完成?

转载 作者:行者123 更新时间:2023-11-30 04:31:15 25 4
gpt4 key购买 nike

Possible Duplicate:
How to know if other threads have finished?

我有一个为我执行线程的线程池,我如何知道我传递给它的所有线程何时完成?

例如:

main.java

for (int i = 0; i < objectArray.length; i++) {
threadPool.submit(new ThreadHandler(objectArray[i], i));
Thread.sleep(500);
}

ThreadHandler.java

public class ThreadHandler implements Runnable {

protected SuperHandler HandlerSH;
protected int threadNum;

public ThreadHandler(SuperHandler superH, int threadNum) {
this.threadNum = threadNum;
this.HandlerSH = superH;
}

public void run() {

//do all methods here

}

我是否可以在 run() 部分中添加一些内容来设置 boolean 值或其他内容?我会创建一个 boolean 数组来检查它们何时完成吗?

谢谢。

最佳答案

当您将作业提交到线程池中时,它会返回 Future instance 。您可以调用 Future.get() 来查看作业是否已完成。这实际上类似于线程池中运行的任务的联接。

如果线程池已关闭并且您想要等待所有任务完成,您也可以调用threadPool.awaitTermination(...)

通常,当我向线程池提交多个作业时,我会将它们的 future 记录在列表中:

List<Future<?>> futures = new ArrayList<Future<?>>();
for (int i = 0; i < objectArray.length; i++) {
futures.add(threadPool.submit(new ThreadHandler(objectArray[i], i)));
}
// if we are done submitting, we shutdown
threadPool.shutdown();

// now we can get from the future list or awaitTermination
for (Future<?> future : futures) {
// this throws an exception if your job threw an exception
future.get();
}

关于java - 如何判断线程是否已完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14607687/

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