gpt4 book ai didi

java - 检查 java 线程是否已被 join()ed

转载 作者:行者123 更新时间:2023-12-03 12:57:02 26 4
gpt4 key购买 nike

我想检查某个线程是否已经加入。
在下面的代码中,我有在不同时间完成的线程,我想检查一个线程是否已终止并且尚未加入。

有没有好的方法来检查这个?

while(!allJoined){
allJoined=true;
for ( int i = 0; i < 10; i++ )
{
try {
if(!threadList[i].isAlive() && threadList[i].NOT_YET_JOINED() ) {
threadList[i].join(0);
System.out.println("Joined t-"+i);
} else {
allJoined = false;
}

} catch (Exception e) {
System.out.println("MASTER: Child interrupted."+e);
}
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
System.out.println("Child interrupted.");
}
}

最佳答案

是否有join()编辑了一个线程是 的一部分您的 状态,而不是线程的状态。想象一下:你可以有几个线程都试图加入一个给定的工作线程。

你为什么不保留一个你已经加入的线程的列表?

然后在您之前检查该列表join它。

Vector<Thread> joined = new Vector<Thread>();
for(int i=0;i<threadList.length;i++) {
if(threadList[i].isAlive() && !joined.contains(threadList[i])){
threadList[i].join(0);
joined.add(threadList[i]);
}
}

然后使用joined.size() 查看是否全部加入。

关于java - 检查 java 线程是否已被 join()ed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7493118/

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