Daemon线程

1、简介

Daemon线程是一种支持类型的线程,因为它主要被用作程序中后台调度以及支持性工作,这意味着,当一个java虚拟机中不存在非Daemon线程的时候,JAVA虚拟机将会退出,可以通过调用Thread.setDaemon(true)将线程设置为Daemon线程

注意:Daemon属性需要在启动线程之前设置,不能再线程启动之后设置

2、使用

Daemon线程被用作完成支持性工作,但是在java虚拟机退出时Daemon线程中的finally快并不会执行

package cn.sunline.demo.demo4;

public class Daemon {
	public static void main(String[] args) {
      Thread thread = new Thread(new DeamonRunner(),"DeamonRunner");
      thread.setDaemon(true);
      thread.start();
	}
	static class DeamonRunner implements Runnable{

		@Override
		public void run() {
			try {
				Thread.sleep(10);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally {
				System.out.println("finally run");
			}
			
		}
		
	}
}

3、结果

运行daemon程序,没有输出任何东西,main线程(非Daemon线程)在启动线程DeamonRunner 之后随着main方法执行完毕而终止,而此时的java虚拟机中已经没有非Daemon线程,虚拟机需要退出,java虚拟机中所有的Daemon线程都需要立即终止,因此DeamonRunner立即终止,所以没有执行finally里面的内容

注意:在构建Daemon线程是,不能依靠finally块中的内容来确保执行关闭或者清理资源的逻辑

发布了75 篇原创文章 · 获赞 85 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/zhangchangbin123/article/details/81108763