Java:子线程可以比主线程更活跃

时间:2018-03-31 18:27:50

标签: java java-9

我在Java中了解到:子线程比主线程更胜一筹,但是,看起来,这个应用程序的行为显示出不同的结果。

子线程在主线程完成工作的同时继续工作!

以下是我的工作:

public class Main {

public static void main(String[] args) {

    Thread t = Thread.currentThread();

    // Starting a new child thread here
    new NewThread();

    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    System.out.println("\n This is the last thing in the main Thread!");


    }
}

class NewThread implements Runnable {

private Thread t;

NewThread(){
    t= new Thread(this,"My New Thread");
    t.start();
}

public void run(){
    for (int i = 0; i <40; i++) {
        try {
            Thread.sleep(4000);
            System.out.printf("Second thread printout!\n");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

}

我在这里无法理解......或者从JDK 9开始,这是Java的新功能?

1 个答案:

答案 0 :(得分:6)

根据Thread#setDaemon的{​​{3}}:

  

当运行的唯一线程都是守护程序线程时,Java虚拟机退出。

您的子线程不是守护程序线程,因此即使主线程不再运行,JVM也不会退出。如果在t.setDaemon(true);的构造函数中调用NewThread,则JVM将在主线程执行完毕后退出。