Java后台线程操作示例【守护线程】
本文实例讲述了Java后台线程操作。分享给大家供大家参考,具体如下:
一 点睛
有一种线程,它是后面运行的,它的任务是为其他线程提供服务,这种线程被称为“后台”线程,又称为“守护线程”或“精灵线程”。JVM的垃圾回收线程就是典型的后台线程。
后台线程有个特征:如果所有的前台线程都死亡,后台线程会自动死亡,
调用Thread对象的setDaemon(true)方法可将指定线程设置成后台线程,所有的前台线程都死亡时,后台线程随之死亡。当整个虚拟机中只剩下后台线程时,程序就没有继续运行的必要了,虚拟机也就退出了。
二 代码
public class DaemonThread extends Thread { // 定义后台线程的线程执行体与普通线程没有任何区别 public void run() { for (int i = 0; i < 1000 ; i++ ) { System.out.println(getName() + " " + i); } } public static void main(String[] args) { DaemonThread t = new DaemonThread(); // 将此线程设置成后台线程 t.setDaemon(true); // 启动后台线程 t.start(); for (int i = 0 ; i < 10 ; i++ ) { System.out.println(Thread.currentThread().getName() + " " + i); } // -----程序执行到此处,前台线程(main线程)结束------ // 后台线程也应该随之结束 } }
三 运行
main 0
Thread-0 0
main 1
Thread-0 1
main 2
Thread-0 2
main 3
Thread-0 3
main 4
Thread-0 4
main 5
Thread-0 5
main 6
Thread-0 6
main 7
Thread-0 7
main 8
Thread-0 8
main 9
Thread-0 9
Thread-0 10
Thread-0 11
Thread-0 12
Thread-0 13
Thread-0 14
Thread-0 15
Thread-0 16
Thread-0 17
Thread-0 18
四 说明
上面程序中先将t线程设置成后台线程,然后启动该线程,本来该线程应该执行到i等于999才会结束,但从结果不难发现,该后台线程无法运行到999,因为当主线程也就是程序唯一的前台线程运行结束后,JVM会主动退出,因而后台线程也就被结束了。
主线程默认是前台线程,t线程默认也是前台线程。并不是所有的线程默认都是前台线程,有些线程默认就是后台线程——前台线程创建的子线程默认是前台线程,后台线程创建的子线程默认是后台线程。
setDaemon(true)必须在start()方法之前调用,否则会引发异常。
更多java相关内容感兴趣的读者可查看本站专题:《Java进程与线程操作技巧总结》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。