Java-程序结束时自动停止线程

Con*_*sen 3 java multithreading

看一下这段代码:

public class ThreadTest {

    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                while(true) {
                    //some code here
                }
            }
        }).start();

        System.out.println("End of main");
    }

}
Run Code Online (Sandbox Code Playgroud)

通常,main到达的结尾时,程序会终止。但是在此示例中,程序将打印“ main of End”,然后继续运行,因为线程仍在运行。有没有一种方法可以使线程在结束时自动停止,而无需使用类似的东西while(isRunning)

Ami*_*era 5

您创建的线程是独立的,并且不依赖于主线程终止。您可以使用Daemon线程。当没有其他线程在运行时,守护程序线程将由JVM终止,它也包括一个执行主线程。

public static void main(String[] args) {
    Thread t = new Thread(new Runnable() {
        @Override
        public void run() {
            while (true) {
                System.out.println("Daemon thread");
            }
        }
    });
    t.setDaemon(true);
    t.start();

    System.out.println("End of main");
}
Run Code Online (Sandbox Code Playgroud)