14.7后台守护线程

java中的线程分为两类:用户线程、守护线程。守护线程(Daemon)是一种运行在后台的线程服务线程,当用户线程存在时守护线程也可以同时存在,如果用户线程全部消失(程序执行完毕,JVM进程结束)时守护线程也会消失。
用户线程就是用户自己开发或者由系统分配非人防主线程,其处理的是核心功能,守护线程就像用户线程的保镖一样,如果用户线程一旦消失,守护线程就没有存在的意义了。在java中提供有自动垃圾收集机制,实际上这就是属于一个守护线程,当用户线程存在时,GC线程将一直存在,如果全部的用户线程执行完毕了,那么GC线程就没有存在的意义了。
java中的线程都是通过Thread类来创建的,用户线程和守护线程除了运行模式的区别外,其他完全相同。
守护线程操作方法:

在这里插入图片描述
范例:使用守护线程

public class ThreadDemo334 {
       public static void main(String[] args) {
		Thread userThread=new Thread(()->{
			for(int x=0; x<2;x++) {
				try {
					Thread.sleep(100);
				} catch (InterruptedException e) {
					
					e.printStackTrace();
				}
				System.out.println(Thread.currentThread().getName()+"正在运行、x="+x);
			}
			
		},"用户线程");    //完成核心业务
		Thread DaemonThread=new Thread(()->{
			for (int x = 0; x <Integer.MAX_VALUE; x++) {
				try {
					Thread.sleep(100);
				} catch (InterruptedException e) {
					
					e.printStackTrace();
				}
				System.out.println(Thread.currentThread().getName()+"正在运行、x="+x);
			}
			
		},"守护线程") ;                  //完成核心业务
		
		DaemonThread.setDaemon(true);    //设置为守护线程
		userThread.start();              //启动用户线程
		DaemonThread.start();            //启动守护线程
	}
}

执行结果

用户线程正在运行、x=0
守护线程正在运行、x=0
守护线程正在运行、x=1
用户线程正在运行、x=1

本程序定义了一个守护线程,并且该守护线程将一直进行信息的输出,但是通过执行的结果可以发现,当用户线程消失后守护线程也同时结束。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章