对Java程序来说,只要还有一个前台线程在运行,这个进程就不会结束, 如果 一个进程中只有后台 线程在运行,这个进程就会结束。前台线程是相对后台线程而言的,前面所介绍的线程都是前台线程。那么什么样的线程是后台线程呢?如果某个线程对象在启动( 调用 start() 方法)之前调用了setDaemon( true) 方法,这个线程就变成了后台线程。下面看一下进程中只有后台线程在运行的情况。
/** * Created by xabcd on 2019/2/17. */ public class TestDaemon { public static void main(String args[]) { ThreadTest t = new ThreadTest();//先背下 Thread tt = new Thread(t);//先背下 tt.setDaemon(true);//先背下 tt.start();//先背下 } } class ThreadTest implements Runnable { public void run() { while(true) { System.out.println(Thread.currentThread().getName()+"is running"); } } } 结果: Thread-0is running 结果:虽然创建了一个无限循环的线程,但因为它是后台线程,因此整个进程在主线进程结束时就随之终止运行了,这验证了进程中只有后台线程运行时,进程曾就会结束的说法。