gpt4 book ai didi

java - 我必须手动停止 Java 中的线程吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:53:54 26 4
gpt4 key购买 nike

当我的应用程序准备退出时,通过关闭窗口或调用 System.exit() 方法。我是否必须手动停止我可能已创建的线程,或者 Java 会为我处理这些事情吗?

最佳答案

如果您使用 System.exit()。所有线程都将停止,无论它们是否是守护进程。

否则,JVM 将自动停止所有由 Thread.setDaemon(true) 设置的守护线程。换句话说,只有当剩下的线程都是守护线程或根本没有线程时,jvm 才会退出。

考虑下面的示例,即使在 main 方法返回后它仍将继续运行。但是如果你将它设置为守护进程,它会在 main 方法(主线程)终止时终止。

public class Test {

public static void main(String[] arg) throws Throwable {
Thread t = new Thread() {
public void run() {
while(true) {
try {
Thread.sleep(300);
System.out.println("Woken up after 300ms");
}catch(Exception e) {}
}
}
};

// t.setDaemon(true); // will make this thread daemon
t.start();
System.exit(0); // this will stop all threads whether are not they are daemon
System.out.println("main method returning...");
}
}

关于java - 我必须手动停止 Java 中的线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3536640/

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