java 主线程 守护线程_JAVA多线程之守护线程

  • Post author:
  • Post category:java


守护线程:顾名思义,就是守护线程的线程;在JAVA线程分为 用户线程(User Thread)和守护线程(Daemon Thread) ;守护线程就是用来守护用户线程的。所以JVM中如果没有需要守护的线程了,守护线程也就没有存在的意义;守护线程最典型的应用就是 GC (垃圾回收器)。守护线程并非只有虚拟机内部提供,用户在编写程序时也可以自己设置守护线程

一、设置守护线程

4b596fd4ac8fd0547efc62a9c931b0df.png

20dff029b2a620dff0e5dc5cdf28f0e6.png

由此可见JAVA中创建线程默认是User Thread ;

setDaemon()方法必须在调用线程的start()方法之前调用

二、守护线程的特点

1、守护线程,在所有的的非守护线程(即用户线程)结束之后,程序就会结束,JVM退出,同时也就会杀死所有的守护线程。所以也就意味着,守护线程不适合去访问固有资源,比如文件,数据库。因为随时可能中断;守护线程会随着主程序的结束而结束,但是用户线程不会,或者说只要有一个用户线程未退出,进程就不会终止。

d156812ae5155eb77eb6a54d10ea7769.png

2、默认情况下,程序员创建的线程是用户线程;用setDaemon(true)可以设置线程为后台线程;而用isDaemon( )可以判断一个线程是前台线程还是后台线程;main 线程是一个用户线程;jvm的垃圾回收器其实就是一个守护线程;

02c76574c83d07429f5e23d716567f36.png



版权声明:本文为weixin_42360905原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。