gpt4 book ai didi

java - 连接到所有其他线程时循环不会终止

转载 作者:太空宇宙 更新时间:2023-11-04 06:37:31 25 4
gpt4 key购买 nike

首先,我一直在寻找答案。我一直在尝试以这种方式加入我的所有线程:

Set<Thread> threads = Thread.getAllStackTraces().keySet();
try {
for (Thread t : threads)
if(t!=Thread.currentThread())
t.join(5*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}

但我陷入了无限循环?当我调试时,我可以看到线程正在结束,这是怎么回事?

我也尝试过:

Set<Thread> threads = Thread.getAllStackTraces().keySet();
try {
for (Thread t : threads)
if(!t.toString().contains("main") || !t.toString().contains("system"))
t.join(5*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}

我得到了相同的结果。帮助将不胜感激:)

最佳答案

您正在等待属于 JVM 的线程终止,但您错误地指定了逻辑。所有线程都符合“不包含 main 或不包含 system”的条件,除非它以某种方式包含这两个词。尝试使用 && 代替:

if(!t.toString().contains("main") && !t.toString().contains("system"))

使用&&,我的流程很快就存在了。

如果您正在等待线程终止,请维护您自己的程序启动的线程列表,并等待它们终止。不要从 Thread.getAllStackTraces 获取列表,因为它将包含您未启动且不会首先终止的其他线程。

关于java - 连接到所有其他线程时循环不会终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25171743/

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