这是我的程序,在主程序
下启动一个线程public class ThreadTest {
public static void main(String args[]) throws InterruptedException {
Thread mainThread = Thread.currentThread();
Thread t1 = new Thread() {
public void run() {
while (true) {
System.out.println("Hi");
}
}
};
// t1.setDaemon(true);
t1.start();
}
}
如何在主线程停止之前确保其所有子线程都已停止?
我不想使用守护进程选项。这可能吗?
答案 0 :(得分:4)
在主线程中,您可以等待其他线程完成。
在主线程do执行的方法中(在您的示例中为main方法):
t1.join();
但请记住,如果t1
永远不会完成,主线程永远不会完成。所以你想要使用migth
加入超时。
t1.join(10000);
答案 1 :(得分:2)
使用t1.join()
,join()
方法使主线程或任何其他线程在调用时,等待此任务结束然后继续它的工作。在您的情况下,在致电System.exit(0);
或制作t1.join(1000); // wait only for one second
之前,您的计划永远不会完成执行。
答案 2 :(得分:1)
只需添加t1.join()添加方法的结尾:
t1.start();
t1.join();
主线程将等到t1完成。
答案 3 :(得分:0)
如果您有多个子线程,建议您尝试信号
答案 4 :(得分:0)
t1.join();
System.out.println(mainThread.getName());
System.out.println(t1.getName());
主线程将等到执行t1完成