有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java主线程为什么等待

在下面的代码中,为什么主线程要等到子线程完成

司机。爪哇

public class Driver {
public static void main(String[] args) throws InterruptedException {
    Thread t = new Thread(new ThreadRunner());
    t.start();
}
}

ThreadRunner。爪哇

public class ThreadRunner implements Runnable {
@Override
public void run() {
    for (int i = 0; i < 10; i++) {
        System.out.println("Child thread" + i);
    }
}
}

在调用't.start()'后的驱动程序类中,程序不应该退出吗?我没有使用join,但主线程仍然会等待新旋转的“ThreadRunner”运行。是否因为在java中,主线程(由main方法启动)总是等待所有线程关闭


共 (3) 个答案

  1. # 1 楼答案

    主线程实际上并不等待。主线程完成。程序不会退出,因为您创建了一个非守护进程的Thread。当只剩下守护进程线程时,JVM将关闭

  2. # 2 楼答案

    您可以添加“系统”。出来println(“主线程”);'在“t.start()”下面

    然后你可以看到主线程是第一个

  3. # 3 楼答案

    主线程在启动另一个线程后立即退出,但Java程序作为一个整体继续运行,只要存在非守护进程线程(除非您特别请求,否则新线程将是非守护进程)

    使线程成为守护进程线程很容易:只需在启动它之前调用t.setDaemon(true);