【线程】什么是守护线程?

article/2025/10/3 7:07:15

Java提供了两种线程:守护线程和用户线程

守护线程,是指在程序运行时 在后台提供一种通用服务的线程,这种线程并不属于程序中不可或缺的部分。通俗点讲,任何一个守护线程都是整个JVM中所有非守护线程的"保姆"。

用户线程和守护线程几乎一样,唯一的不同之处在于如果用户线程已经全部退出运行,只剩下守护线程存在了,JVM也就退出了。因为当所有非守护线程结束时,没有了被守护者,守护线程也就没有工作可做,当然也就没有继续执行的必要了,程序就会终止,同时会杀死所有的"守护线程",也就是说只要有任何非守护线程还在运行,程序就不会终止

在Java语言中,守护线程一般具有较低的优先级,它并非只由JVM内部提供,用户在编写程序时也可以自己设置守护线程,例如:将一个线程设置为守护线程的方法就是在调用start()启动线程之前调用对象的setDaemon(true)方法,若将以上参数设置为false,则表示的是用户进程模式,需要注意的是,当在一个守护线程中产生了其他的线程,那么这些新产生的线程默认还是守护线程,用户线程也是如此。

class MyThread extends Thread{@Overridepublic void run() {System.out.println(Thread.currentThread().getName()+"   begin....");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()+"   end.....");}
}
public class Test {public static void main(String[] args){System.out.println("main begin....");Thread thread = new MyThread();thread.setName("线程A");thread.setDaemon(true);thread.start();System.out.println("main end.....");}
}

在这里插入图片描述
从运行结果可以发现,没有输出线程A end.....之所以结果是这样,是因为在启动前将线程A设置为了守护线程,当程序中只有守护线程存在时,JVM是可以退出的。也就是说,当JVM中只有守护线程运行时JVM会自动关闭。因此当main方法调用结束后,main线程退出,此时守护线程A还处于休眠状态没有运行结束,但是由于此时只有守护线程在运行,JVM将会关闭。因此不会输出线程A end.....
守护线程的一个典型的例子就是垃圾回收器。只要JVM启动,它始终在运行,实时监控和管理系统中可以被回收的资源


http://chatgpt.dhexx.cn/article/2Bd60kZN.shtml

相关文章

JAVA多线程基础篇--守护线程(Daemon Thread)

1.概述 JAVA中的线程主要分为两类:用户线程(User Thread)和守护线程(Daemon Thread)。JAVA语言中无论是线程还是线程池,默认都是用户线程,因此用户线程也被称为普通线程。守护线程也被称之为后台线程、服务线程或精灵…

面试官: 谈谈什么是守护线程以及作用 ?

文章首发自微信公众号: 小哈学Java 个人网站: https://www.exception.site/java-concurrency/java-concurrency-daemon-thread 目录 一、什么是守护线程 二、守护线程的作用及应用场景 三、总结 一、什么是守护线程 守护线程相对于正常线程来说,是比较特殊的一…

入门oracleDBA面试题

1.默认情况下管理员创建了一个用户,就会在 /home 下创建一个用户的主目录 2.当用mount进行设备或文件挂载时,需要用的设备名称位于 /dev 位置。 3.列出目录所有目录里的所有文件ls -l 4.Su 可以讲普通用户转换为超级用户,但是需要密码 5.…

oracle面试题答案,Oracle面试题笔试题及参考答案

一套Oracle面试题笔试题及参考答案 Oracle, 笔试, 面试 完成下列操作,写出相应的SQL语句 1.创建表空间neuspace,数据文件命名为neudata.dbf,存放在d:\data 目录下,文件大小为200MB,设为自动增长,增量5MB&am…

一个oracle面试题

某天,群里突然冒出一个道友询问oracle的面试题,特此记录一下 一系列过程: 第一步建表: DROP TABLE serv; DROP TABLE terminal; CREATE TABLE serv(serv_id NUMBER(10),prod_id NUMBER(10),user_type VARCHAR2(30),terminal_na…

oracle试题和答案,Oracle面试题及答案

Oracle面试题及答案模块和题目 l基本SQL查询 l运算符与函数 l子查询 l连接查询 建表语句emp.sql PartI(第一天) 01.查询员工表所有数据,并说明使用*的缺点 答: select*fromemp; 使用*的缺点有 a)查询出了不必要的列 b)效率上不如直接指定列名 02.查询职位(JOB)为PRE…

Oracle面试题整理

目录 Oracle面试题整理 1.MySQL和Oracle的区别: 2.Oracle中function和procedure的区别? 3. 比较truncate和delete命令 ? 4.oralce中 rowid, rownum的定义 5. 事务的特性(ACID)是指什么 6. 列举几种表连接方式…

Oracle面试题及答案整理,速速收藏

点击上方SQL数据库开发,关注获取SQL视频教程 SQL专栏 SQL数据库基础知识汇总 SQL数据库高级知识汇总 好久没有给大家发面试题了,最近收集了一套Oracle的面试题,特地整理出来分享给大家,希望对你有帮助。 1、表:table1(…

Oracle数据库面试题

1、什么是数据库? 使用数据结构存储数据的仓库。 2、什么是关系型数据库? 使用关系模型存储数据的数据库。 关系模型指表与表之间的关系,包含一对一、一对多、多读多。 3、什么是非关系型数据库? 使用非关系模型保存数据的数据…

Oracle 面试题汇总

1,delete 与Truncate区别? 1)Truncate 是DDL 语句,DELETE 是DML语句。 2) Truncate 的速度远快于DELETE; 原因是: 当执行DELETE操作时所有表数据先被COPY到回滚表空间,数据量不同…

取消WIN10上shift键切换中英文输入法的设置

关闭全角半角切片: 设置 -> 时间和语言 -> 语言 -> 选项 -> 微软拼音输入法选项 -> 常规 -> 使用半角输入模式(开) Win10自带的输入法本人感觉还不错,但是在常用shift键实现其他相应功能的时候,(如我经常用shift切换大小写…

Visual Studio 中英文切换

Visual Studio 中英文切换 今天发现Visual Studio用中文太没意思,于是研究了下如何改为英文版,这里以Visual Studio2017为例,如下: Visual Studio默认是不支持英文的,需要先安装下语言包: 找到Visual Stud…

pycharm中英文切换

1、关闭当前project 2、按照下图,如果有勾,就把勾去除,重新打开project,就是英文版了,反之是中文界面

springboot-页面中英文切换(国际化原理)

在springboot中有MessageSourceAutoConfiguration这个自动配置类,通过搜索找到这个类 首先可以看到这个类在配置文件中通过spring.messages.xxx来对对应properties中的属性进行配置,我们点进去properties这个对象里面,也就是类MessageSource…

winform中英文切换(实测简单可用)

Language改为英语或者英语-美国都行 2.再改为中文 就会在form1.cs里得到两个文件。分别在中文里填写中文,英文里填写英文,记得给控件后面加.Text 3.拖两个radiobutton控件放上来,加上这两段代码就可以实现中英文切换啦 // Language_Index 1/…

Visual studio的中英文切换

我们用visual studio , 有不同语言的版本。其实不同语言可以互相切换。 中文版去英文版是这样的: 打开vs菜单中的工具->选项 区域设置点击语言选择 然后选择英文 点击切换 英文版去中文版是:Tools-> Option International setting…

C# 中英文切换

简介: 一个项目如果要面对外国的客户时,需要语言切换。本文使用XML,XML是可扩展标记语言(Extensible Markup Language)的缩写,仅用于存储数据。 代码下载链接。 中文 英文 1.使用 新建三个文件。文件的路径…

html中文输入转换成英文,中英文转换,键盘如何中英文切换!

中英文的切换 首先在电脑上安装一个搜狗输入法,可以在搜狗搜索中下载安装。02 输入法安装完。 进入属性设置中,点击【按键】设置选项,首先看到的就是中英文切换设置,这时看到。shift键。楼上,ctrl空格 是切换中英文输入…

Android中英文切换

前言 在Android开发中,针对不同的客户群体,可能需要使用多国语言来对项目进行支持,那么,对于Android studio,如何实现这个功能呢?比如我们要实现Android程序中英文切换,该怎么做呢?…

Centos7 在英文环境中实现中英文切换

学习记录,参考:CentOS7英文环境下使用中文输入法 - InsideOut - 博客园 1. 安装中文拼音 #yum install ibus 2. 复制(原理不太清楚) #cp /usr/share/locale/zh_CN/LC_MESSAGES/ibus* /usr/share/locale/en_US/LC_MESSAGES 3.…