黑马程序员技术交流社区
标题:
一个简单的例子说明Java对后台线程的处理机制
[打印本页]
作者:
周博文
时间:
2015-8-15 00:11
标题:
一个简单的例子说明Java对后台线程的处理机制
先说明一下什么是后台线程,后台线程又叫守护线程,我们可以将后台线程和后台进程进行对比去理解,后台进程相信大家都不陌生,在操作系统启动的时候,会有很多的后台进程跟着启动,这些进程一般不会被用户察觉到,但却默默的随着系统启动了,比如防火墙,资源管理器。而后台线程有些类似于后台进程,它可以和普通线程一样执行run方法中的代码,但JVM对后台线程的处理却和普通线程不同,我用下面的代码来说明JVM对后台线程是如何对待的:
/*
* 一段简单的代码来说明Java虚拟机对于后台线程的处理方式
*/
public class DeamonThreadDemo {
public static void main(String[] args) throws InterruptedException {
//定义一个线程
Thread myThread = new Thread(new Runnable() {
@Override
public void run() {
try {
while(true) {
System.out.println("我是一个后台线程");
}
} catch (Exception e) {
System.out.println("我知道这里没有异常");
} finally {
System.out.println("我是后台线程的finally语句,JVM会不会执行我?");
}
}
});
//将myThread设置为后台线程
myThread.setDaemon(true);
myThread.start();
System.out.println(Thread.currentThread().getName() + "結束");
}
}
复制代码
上面代码的运行结果如下:
main結束
我是一个后台线程
我是一个后台线程
我是一个后台线程
我是一个后台线程
我是一个后台线程
我是一个后台线程
结果分析:每次运行的结果不一定相同,但运行结果的关键在于,finally语句块中的语句并没有被虚拟机调用执行,这恰好表明了JVM在对待后台线程时的处理方式是:当所有非后台线程执行完毕,JVM就会退出,即便此时仍然有后台进程在运行。
希望能够帮助大家理解什么是后台线程。
作者:
风华正茂
时间:
2015-8-15 17:59
楼主分析得不错,赞一个
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2