有Daemon字眼的守护线程,和没有的差异是什么?怎么创建有daemon字眼的线程?

在编程中,尤其是在Java等支持多线程的编程语言中,守护线程(Daemon Thread)与普通线程(Non-Daemon Thread)之间存在一些关键差异。这些差异主要体现在它们对程序终止行为的影响上。

主要差异

  1. 程序终止行为
    • 守护线程:守护线程的主要特点是,当程序中所有非守护线程都结束时,不管守护线程是否还在执行,程序都会终止。守护线程通常用于执行“后台”任务,如垃圾回收、日志记录等,这些任务不需要阻止程序的正常退出。
    • 非守护线程:只要程序中有非守护线程还在运行,程序就不会终止。只有当所有非守护线程都结束后,程序才会终止。
  2. 创建方式
    • 守护线程和非守护线程在创建方式上并无直接区别,主要是通过设置线程的daemon属性来区分。默认情况下,新创建的线程是非守护线程。

如何创建有Daemon字眼的守护线程

在Java中,你可以通过调用线程的setDaemon(true)方法来将线程设置为守护线程。注意,这个调用必须在线程启动之前进行。一旦线程启动,就不能再更改其守护状态了。

下面是一个简单的Java示例,演示了如何创建一个守护线程:

 

java复制代码

public class DaemonThreadExample {
public static void main(String[] args) {
// 创建一个守护线程
Thread daemonThread = new Thread(() -> {
while (true) {
try {
// 模拟长时间运行的任务
Thread.sleep(1000);
System.out.println("Daemon Thread is running...");
} catch (InterruptedException e) {
Thread.currentThread().interrupt(); // 保持中断状态
}
}
});
// 设置为守护线程
daemonThread.setDaemon(true);
// 启动线程
daemonThread.start();
// 主线程简单运行一段时间
try {
Thread.sleep(5000); // 假设主线程运行5秒后结束
} catch (InterruptedException e) {
Thread.currentThread().interrupt(); // 保持中断状态
}
// 5秒后,由于所有非守护线程都已结束,守护线程也将被终止,程序随之退出
System.out.println("Main Thread Exiting...");
}
}

请注意,在这个例子中,虽然守护线程被设计为无限循环,但由于主线程(也是唯一的非守护线程)在5秒后结束,守护线程也会被强制终止,程序随后退出。这展示了守护线程如何不影响程序的正常退出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/44429.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot新手快速入门系列教程:前述

我自己是一个SpringBoot新手,花了一天时间学了SpringBoot。大家不要惊讶,前提是我自己已经有了10几年的编程经验精通多门语言,并且在人间最强兵器Chat某T的AI助手帮助下,才能创造一天快速学会一个框架的神话。 当然中间遇到了很多…

笔试算法刷题

猿辅导2021校园招聘笔试(算法一) 牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网 (nowcoder.com) 第一眼看到这个题想到的是蓝桥杯飞机降落,贪心题。但是这样算的是最大不相交区间数量&#xff0…

Test-Time Adaptation via Conjugate Pseudo-labels--论文笔记

论文笔记 资料 1.代码地址 https://github.com/locuslab/tta_conjugate 2.论文地址 https://arxiv.org/abs/2207.09640 3.数据集地址 论文摘要的翻译 测试时间适应(TTA)指的是使神经网络适应分布变化,在测试时间仅访问来自新领域的未标记测试样本。以前的TT…

致远漏洞(登陆绕过+任意文件上传)

漏洞复现 1.获得cookie POST /seeyon/thirdpartyController.do HTTP/1.1 Host: 192.168.1.9 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0 Accept: text/html,application/xhtmlxml,application/xml;q0.9,*/*;q0.8 Accept-Langua…

大数据面试题之ElasticSearch(1)

目录 ElasticSearch介绍 ElasticSearch架构 ElasticSearch深度分页 ElasticSearch调优手段有哪些 ElasticSearch脑裂了怎么办 ElasticSearch的倒排索引 ElasticSearch如何实现master选举 ElasticSearch的搜索过程说下 ElasticSearch如何在并发情况下保证读写一 Elast…

uni-app三部曲之一: Pinia使用

1.引言 最近在学习移动端的开发,使用uni-app前端应用框架,通过学习B站的视频以及找了一个开发模板,终于是有了一些心得体会。 B站视频1:Day1-01-uni-app小兔鲜儿导学视频_哔哩哔哩_bilibili B站视频2:01-课程和uni的…

简述设计模式-策略模式

概述 在策略模式中一个类的行为或者算法可以在运行时更改,这种类型的设计模式属于行为型模式。 在策略模式中定义了一系列的算法和策略,并将每个算法封装在独立的类中,使得他们能够互相替换,通过使用策略模式可以在运行时选择不…

java 实现Comparable接口和实现Comparator接口排序的区别

Comparable接口 作用: Comparable接口是在类的内部实现的,用于指定类的默认比较规则。当一个类实现了Comparable接口时,它必须实现compareTo方法,该方法用于定义对象之间的自然顺序。 实现方式: 实现Comparable接口的…

洛谷P10716【MX-X1-T4】「KDOI-05」简单的字符串问题(扩展kmp+set+二分+扫描线树状数组)

题目 思路来源 小羊肖恩 题解 羊神这个做法tql,当时只是机械地写,过了之后再想想,才觉得确实是nb 先扩展kmp(Z函数)预处理出来数组,记z[i]为i往后可以和前缀匹配的最大长度 对于每个询问(p,cnt)&#x…

隧道转发:保护你的数据传输安全

你曾经是否担心过你的数据安全?现代网络威胁不断增加,保护数据传输的安全性变得愈发重要。今天为大家介绍一种强大的网络传输技术——隧道转发(Tunneling)。这项技术不仅能有效保障数据安全,还能保护用户隐私&#xff…

centOS79中安装nginx12.15

##red## 🔴 大家好,我是雄雄,欢迎关注微信公众号,雄雄的小课堂。 前言 装了这么多,发现Nginx是最简单的,一次性就搞定了。下面我们来看看如何安装 安装Nginx 安装gcc-c编译器 分开运行: yum…

anaconda安装pytorch

📚博客主页:knighthood2001 ✨公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下) 🎃知识星球:【认知up吧|成长|副业】介绍 ❤️如遇文章付费,可先看…

python爬虫入门(三)之HTML网页结构

一、什么是HTML 1、网页的三大技术要素&#xff1a; HTML定义网页的结构和信息&#xff08;骨架血肉&#xff09;CSS定义网页的样式&#xff08;衣服&#xff09;JavaScript定义用户和网页的交互逻辑&#xff08;动作&#xff09; 2、一个最简单的HTML&#xff1a;用<>…

Qt开发 | qss介绍及控件应用 | qss加载方式 | 控件提升 | 鼠标位置与控件位置 | 搜索编辑框 | tab在左文本水平的tabWidget

文章目录 一、qss简介与应用二、QLineEdit qss介绍与使用三、QPushButton qss1.常用qss1.1 基本样式表1.2 背景图片1.3 图片在左文字在右 2.点击按钮弹出菜单以及右侧箭头样式设置3.鼠标悬浮按钮弹出对话框 四、QCheckBox qss妙用&#xff1a;实时打开关闭状态按钮五、QComboBo…

丑数问题,力扣264,坑点

丑数问题&#xff0c;力扣264&#xff0c;坑点 力扣链接 给你一个整数 n &#xff0c;请你找出并返回第 n 个 丑数 。 丑数 就是质因子只包含 2、3 和 5 的正整数。 示例 1&#xff1a; 输入&#xff1a;n 10 输出&#xff1a;12 解释&#xff1a;[1, 2, 3, 4, 5, 6, 8, 9, …

Shell选择结构

文章目录 一、条件判断二、实例 一、条件判断 格式1&#xff1a;test 条件表达式 格式2&#xff1a;[条件表达式] 格式3&#xff1a;[[条件表达式]] -e 是否存在&#xff0c;不管是文件还是目录&#xff0c;只要存在&#xff0c;条件就成立。 -f 是否为普通文件 -d 是否为目录…

《昇思25天学习打卡营第01天|qingyun201003》

打卡 日期 心得 我的主语言并不是Python,以及现在从事的工作也并不是开发&#xff1b;所以对于这个系列的课程&#xff0c;学习起来是较为困难的&#xff0c;所以基于这种情况&#xff0c;该如何进行学习&#xff1f;我的做法是全部交给AI&#xff0c;使用AI一步步解析代码&a…

java.lang.NullPointerException: null cannot be cast to non-null type kotlin.Int

java.lang.NullPointerException: null cannot be cast to non-null type kotlin.Int fun main(args: Array<String>) {var any1: Any?any1 nullval n1 any1 as? Int ?: -2024println(n1)kotlin.runCatching {var any2: Any?any2 nullval n2 any2 as Intprintln(…

python xlsx 导出表格超链接

该Python脚本用于从Excel文件中的第一列提取所有超链接并保存到一个文本文件中。首先&#xff0c;脚本导入必要的库并定义输入和输出文件的路径。然后&#xff0c;它确保输出文件的目录存在。接着&#xff0c;脚本加载Excel文件并选择活动工作表。通过遍历第一列的所有单元格&a…

Internet Download Manager6.42最新下载器互联网冲浪小能手们!

今天我要来种草一个超级棒的宝贝——Internet Download Manager&#xff08;简称 IDM&#xff09;。这个小家伙简直是下载界的“速度与激情”代言人&#xff0c;让我彻底告别了等待的日子。&#x1f389; IDM马丁正版下载如下: https://wm.makeding.com/iclk/?zoneid34275 …