setDaemon

setDaemon

对Java程序来说,只要还有一个前台线程在运行,这个进程就不会结束,如果一个进程中只有后台线程在运行,这个进程就会结束。前台线程是相对后台线程而言的,前面所介绍的线程都是前台线程。那么什么样的线程是后台线程呢?如果某个线程对象在启动(调用start()方法)之前调用了setDaemon(true)方法,这个线程就变成了后台线程。下面来看一下进程中只有后台线程在运行的情况,如下所示:

范例:ThreadDaemon.java

01 public class ThreadDaemon

02 {

03 public static void main(String args[])

04 {

05 ThreadTest t = new ThreadTest() ;

06 Thread tt = new Thread(t) ;

07 tt.setDaemon(true) ; // 设置后台运行

08 tt.start();

09 }

10 }

11

12 class ThreadTest implements Runnable

13 {

14 public void run()

15 {

16 while(true)

17 {

18 System.out.println(Thread.currentThread().getName()+"is running.");

19 }

20 }

21 }

从上面的程序和运行结果(图9-4)上,可以看到:虽然创建了一个无限循环的线程,但因为它是后台线程,整个进程在主线程结束时就随之终止运行了。这验证了

进程中只有后台线程运行时,进程就会结束的说法。

你可能感兴趣的:(setDaemon)