位置: IT常识 - 正文

Java守护线程(java守护线程和本地线程区别)

编辑:rootadmin
Java中,通过Thread类,我们可以创建2种线程,分为守护线程和用户线程。 守护线程是所有非守护线程的保姆,当所有非守护线程执行完成或退出了,即使还有守护线程在运行,JVM也会直接退出,因此守护线程通常是用来处理一些辅助工作。 反之,对于非守护线程,只要有一个在运行,JVM就不会退出。 典型的守 ...

Java中,通过Thread类,我们可以创建2种线程,分为守护线程和用户线程。

守护线程是所有非守护线程的保姆,当所有非守护线程执行完成或退出了,即使还有守护线程在运行,JVM也会直接退出,因此守护线程通常是用来处理一些辅助工作。

反之,对于非守护线程,只要有一个在运行,JVM就不会退出。

典型的守护线程如垃圾回收GC线程,当用户线程都结束后,GC也就没有单独存在的必要,JVM直接退出。

我们可以通过Thread对象的setDaemon(boolean on)方法设置是否为守护线程,要在start之前设置:

Thread thread = new Thread(runnable);thread.setDaemon(true); // true表示守护线程,false表示用户线程thread.start();

需要注意的是,如果没有显示调用setDaemon方法进行设置,线程的模式是取决于父线程是否为守护线程,也就是创建此线程所在的线程。

如果父线程是守护线程,创建的线程默认是守护线程;

如果父线程是用户线程,创建的线程默认是用户线程。

这可以从Thread类的init方法源代码中看出:

Thread parent = currentThread();this.daemon = parent.isDaemon();

对于daemon的设置,保存在了Thread对象的成员变量中,Thread提供了setter/getter:

private boolean daemon = false;//是否为守护线程public final void setDaemon(boolean on) {//SecurityManager安全检查,本文不展开讨论checkAccess();//检查线程是否已启动,已启动无法设置daemonif (isAlive()) {throw new IllegalThreadStateException();}daemon = on;}public final boolean isDaemon() {return daemon;}

setDaemon方法中通过isAlive判断线程是否已启动,已启动状态下不允许修改,抛出IllegalThreadStateException异常。

接着我们用示例来验证一下守护线程和非守护线程的区别。

以下是守护线程示例:

Thread t = new Thread(() -> {System.out.println("before");ThreadUtil.sleep(5000);System.out.println("after");});//显式设置daemon为truet.setDaemon(true);t.start();ThreadUtil.sleep(1000);System.out.println("exit");

输出:

beforeexit

可以发现,当线程设置为守护线程后,主线程一旦执行完毕,程序退出,守护线程也随着立即终止。

以下是非守护线程示例:

Thread t = new Thread(() -> {System.out.println("before");ThreadUtil.sleep(5000);System.out.println("after");});//显式设置daemon为falset.setDaemon(false);t.start();ThreadUtil.sleep(1000);System.out.println("exit");

输出:

beforeexitafter

虽然主线程已经执行完毕,但创建的非守护线程还在运行。

具体JVM是如何通过daemon字段控制线程的,这在JDK中找不到相应源码,需要深入hotspot C++源码进行分析,后续有必要再追加更新。

本文链接地址:https://www.jiuchutong.com/zhishi/310482.html 转载请保留说明!

上一篇:织梦dedecms首页列表页获取文章带链接tag标签(织梦官方网站)

下一篇:帝国cms如何解决截图出现黑边的问题(帝国cms使用手册)

  • 那些家喻户晓的品牌为何还要拼命投广告?(那些家喻户晓的孩子)

    那些家喻户晓的品牌为何还要拼命投广告?(那些家喻户晓的孩子)

  • 华生洗衣机质量怎么样(华生洗衣机)(华生洗衣机是哪里生产的)

    华生洗衣机质量怎么样(华生洗衣机)(华生洗衣机是哪里生产的)

  • 华为p20和荣耀10贴膜一样吗(华为p20和荣耀10膜能通用吗)

    华为p20和荣耀10贴膜一样吗(华为p20和荣耀10膜能通用吗)

  • 华为mate20悬浮球怎么设置(华为mate20悬浮球怎么用)

    华为mate20悬浮球怎么设置(华为mate20悬浮球怎么用)

  • 快手附近的人的意思是(快手里附近的人都在看在哪里找到的)

    快手附近的人的意思是(快手里附近的人都在看在哪里找到的)

  • 华为p30为什么越放大就越模糊(华为p30为什么越充电越少)

    华为p30为什么越放大就越模糊(华为p30为什么越充电越少)

  • 高漫数位板笔没反应(高漫数位板笔没有笔尖就有笔触)

    高漫数位板笔没反应(高漫数位板笔没有笔尖就有笔触)

  • 电脑钉钉怎么开摄像头学生(电脑钉钉怎么开两个)

    电脑钉钉怎么开摄像头学生(电脑钉钉怎么开两个)

  • 卸载鲁大师什么后果(卸载鲁大师怎么卸载)

    卸载鲁大师什么后果(卸载鲁大师怎么卸载)

  • 拼多多推广晚上要关吗(拼多多推广晚上推好还是白天推好)

    拼多多推广晚上要关吗(拼多多推广晚上推好还是白天推好)

  • 抖音的私信别人能看到吗(抖音私信工具)

    抖音的私信别人能看到吗(抖音私信工具)

  • 淘宝618外围和会场的区别(淘宝618外围报名)

    淘宝618外围和会场的区别(淘宝618外围报名)

  • 抖音一个手机号能绑定几个(抖音一个手机号能绑定两个账号吗)

    抖音一个手机号能绑定几个(抖音一个手机号能绑定两个账号吗)

  • 电脑钉钉视频会议黑屏什么原因(电脑钉钉视频会议麦克风没有声音)

    电脑钉钉视频会议黑屏什么原因(电脑钉钉视频会议麦克风没有声音)

  • e31220配什么主板(e31220用什么主板好)

    e31220配什么主板(e31220用什么主板好)

  • 微信公众号三种认证方式(微信公众号有三种类型)

    微信公众号三种认证方式(微信公众号有三种类型)

  • apple pencil压感是什么意思(Applepencil压感是多少)

    apple pencil压感是什么意思(Applepencil压感是多少)

  • qq巨轮消失规则(qq巨轮单方面消失了怎么快速回来)

    qq巨轮消失规则(qq巨轮单方面消失了怎么快速回来)

  • ipad a1709什么版本(ipad a1709是什么型号)

    ipad a1709什么版本(ipad a1709是什么型号)

  • 微博身份证使用次数超限(微博身份证使用次数超限怎么解决)

    微博身份证使用次数超限(微博身份证使用次数超限怎么解决)

  • 怎么看自己淘宝好评率(怎么看自己淘宝的退货率)

    怎么看自己淘宝好评率(怎么看自己淘宝的退货率)

  • 怎么去掉文档的标注(怎么去掉文档的页码)

    怎么去掉文档的标注(怎么去掉文档的页码)

  • 苹果x怎么设置电充满(苹果x怎么设置铃声歌曲)

    苹果x怎么设置电充满(苹果x怎么设置铃声歌曲)

  • 抖音直播心礼物多少钱一个(抖音 直播 礼物)

    抖音直播心礼物多少钱一个(抖音 直播 礼物)

  • 腾讯地图怎么添加店铺位置(腾讯地图怎么添加自己的公司)

    腾讯地图怎么添加店铺位置(腾讯地图怎么添加自己的公司)

  • 为什么快手有时候会闪退(为什么快手有时候收不到消息)

    为什么快手有时候会闪退(为什么快手有时候收不到消息)

  • vivox9s怎么备份照片(vivox9s怎么备份数据)

    vivox9s怎么备份照片(vivox9s怎么备份数据)

  • vivoy97后面有指纹吗(vivo手机有哪几款)

    vivoy97后面有指纹吗(vivo手机有哪几款)

  • 两个显示器怎么用一个电脑(两个显示器怎么切换)

    两个显示器怎么用一个电脑(两个显示器怎么切换)

  • 微信不能收红包提示绑定银行卡(没有实名制微信不能收红包)

    微信不能收红包提示绑定银行卡(没有实名制微信不能收红包)

  • 企业所得税核定征收税率表最新
  • 进口增值税的计税价格为
  • 开具红字发票的当月就要进项税额转出吗
  • 工程资金占用计算利率是多少
  • 转登记为小规模纳税人政策
  • 企业清算时未抵扣的进项税账务处理
  • 竞价服务费放在哪个会计科目?
  • 滞留票的原因是什么?
  • 地税按季报还是月报
  • 小规模纳税人开专票需要交税吗
  • 资本溢价公积金计算公式
  • 应收账款的周转率怎么算
  • 所得税按利润总额的25%计算缴纳
  • 税务核定利润的标准
  • 公司参展费取得发票怎样做账?
  • 补充医疗保险报销流程
  • 发票打印注意什么
  • 服务业成本怎么做账
  • 2020年运费发票备注栏新规定
  • 房地产企业申请破产,原来的购房合同还有效吗?
  • 清理血管垃圾最有效的食物
  • 利润为负数怎么调
  • 赠与合同的法定撤销和任意撤销
  • 工资税后补扣是什么意思
  • 调制解调器报告了一个错误怎么弄
  • 公司美团提现到个人银行账户会有什么风险吗
  • 经营性流动负债计算公式
  • 土地增值税清算全流程实战案例
  • 企业投资入股的几种方式
  • laravel自带队列效率
  • php如何遍历二维数组
  • 终止pppoe会话
  • 发票作废申请书模板
  • 建筑工程企业所得税预缴
  • 出口未申报如何处理
  • 织梦怎么调用当前栏目下的文章
  • 帝国cms视频教程
  • discuz设置门户
  • 发票金额大于付款金额怎么做账
  • 如何查询发票领购日期
  • 企业月末在产品数量变化不大时,最适宜
  • 房屋租赁的发票能抵扣吗
  • 纳税人申报的方法有哪些
  • 股权转让实缴资本4000万如何缴纳
  • 一般纳税人转小规模纳税人的条件
  • 制造费用期末有余额在借方
  • 出售资产时递延所得税转回是全部收入吗
  • 印花税的计税依据及税率
  • 工会会计有工资么
  • 变更公司股东要收费吗
  • 暂估成本估多了怎么办
  • 跨两年的发票可以冲红吗
  • 电子发票开票方怎么做账?
  • 银行汇票如何兑现金
  • 工业企业应付会计工作内容
  • sql server数据库文件的扩展名是
  • mysql免安装版怎么使用
  • mac怎么创建apple id
  • warning bios upgrade
  • wdsvc.exe - wdsvc 是什么进程
  • ddriver进程
  • win10笔记本不显示桌面
  • xp调出输入法
  • linux学习思路
  • rotation 与vector3乘积关系
  • 使用nodejs中httpProxy代理时候出现404异常的解决方法
  • percona mongodb
  • js取二维数组数组的值
  • unity3d怎么全屏
  • IE、FF、Chrome浏览器中的JS差异介绍
  • jquery怎么判断复选框选中
  • 安卓如何取消长按电源键关机
  • python 编程技巧
  • 如何用javascript
  • js为什么不能用var定义变量
  • jquery图片
  • 税控盘离线开票时间超限是怎么回事
  • 西安二手房几年可以过户
  • 遵从和尊重
  • 企业税收怎么收
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设