java如何确保在主线程停止之前停止所有线程?
这是我的程序,其中线程在main方法下启动
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();
}
}
如何确保在停止主线程之前,其所有子线程都已停止
我不想使用守护进程选项。这可能吗
# 1 楼答案
使用
t1.join()
,join()
方法使主线程或任何其他线程,在调用它时,等待该任务结束,然后继续它的工作。在您的情况下,在调用System.exit(0);
或maket1.join(1000); // wait only for one second
之前,您的程序永远不会完成执行# 2 楼答案
在主线程中,您可以等待其他线程完成
在主线程执行的方法中(在您的示例中为main方法):
但是请记住,如果
t1
永远不会完成,那么主线程将永远不会完成。所以你可能想用 加入暂停# 3 楼答案
如果你有多个子线程,建议你试试这个信号
# 4 楼答案
只要加上t1。join()添加方法的结尾:
主线程将等待t1完成
# 5 楼答案
主线程将等待t1的执行完成