位置: 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使用手册)

  • 网店推广要多费心思(网店推广要钱吗)

    网店推广要多费心思(网店推广要钱吗)

  • word怎么组合形状和文本框(word怎么组合形状和文字)

    word怎么组合形状和文本框(word怎么组合形状和文字)

  • 为什么腾讯视频qq登不上(为什么腾讯视频总是闪退)

    为什么腾讯视频qq登不上(为什么腾讯视频总是闪退)

  • 钉钉的情侣头像是什么软件(钉钉情侣头像无水印)

    钉钉的情侣头像是什么软件(钉钉情侣头像无水印)

  • 腾讯课堂后台算时间吗

    腾讯课堂后台算时间吗

  • ppt怎么添加超链接(PPT怎么添加超链接视频)

    ppt怎么添加超链接(PPT怎么添加超链接视频)

  • 苹果xr有缝隙正常吗(苹果xr手机屏幕缝隙大)

    苹果xr有缝隙正常吗(苹果xr手机屏幕缝隙大)

  • 咪咕视频用券和vip区别(咪咕视频 劵)

    咪咕视频用券和vip区别(咪咕视频 劵)

  • 苹果x那个圆圈怎么设置出来(iphonex的圆圈圈在哪里)

    苹果x那个圆圈怎么设置出来(iphonex的圆圈圈在哪里)

  • 无线5ghz和2.4ghz区别(wifi 2.4ghz和5ghz)

    无线5ghz和2.4ghz区别(wifi 2.4ghz和5ghz)

  • 怎么阻止58同城打电话(怎么阻止58同城给我发短信)

    怎么阻止58同城打电话(怎么阻止58同城给我发短信)

  • 钢化膜10d跟9d什么区别(钢化膜9d10d什么区别)

    钢化膜10d跟9d什么区别(钢化膜9d10d什么区别)

  • doc就是word吗(doc和docx是word文档吗)

    doc就是word吗(doc和docx是word文档吗)

  • 打印机品质的表示单位(打印机设备品牌和型号)

    打印机品质的表示单位(打印机设备品牌和型号)

  • 小米手机闹钟不响(小米手机闹钟不能在锁屏关闭)

    小米手机闹钟不响(小米手机闹钟不能在锁屏关闭)

  • 仅限紧急呼叫无法访问移动网络(仅限紧急呼叫无法访问该网络)

    仅限紧急呼叫无法访问移动网络(仅限紧急呼叫无法访问该网络)

  • 租的充电宝可以在别的地方还吗(租的充电宝可以充两个手机吗)

    租的充电宝可以在别的地方还吗(租的充电宝可以充两个手机吗)

  • vivo安装包在哪里找(vivo的安装包在哪里找)

    vivo安装包在哪里找(vivo的安装包在哪里找)

  • 屏幕时间密码可以输错几次(屏幕时间密码可以破解吗)

    屏幕时间密码可以输错几次(屏幕时间密码可以破解吗)

  • iphone5处理器是a几(iphone5c的处理器)

    iphone5处理器是a几(iphone5c的处理器)

  • 小米8青春版没有息屏显示(小米8青春版没有指纹解锁了)

    小米8青春版没有息屏显示(小米8青春版没有指纹解锁了)

  • 苹果手机接电话录音在哪里(苹果手机接电话时怎么录音)

    苹果手机接电话录音在哪里(苹果手机接电话时怎么录音)

  • 苹果7重启快捷键(苹果重启快捷键在哪里)

    苹果7重启快捷键(苹果重启快捷键在哪里)

  • 谷歌Colab(免费算力平台)——正确打开方式(常用操作指导tips)(谷歌colab免费额度)

    谷歌Colab(免费算力平台)——正确打开方式(常用操作指导tips)(谷歌colab免费额度)

  • VUE浅拷贝和深拷贝(js浅拷贝和深拷贝的方法)

    VUE浅拷贝和深拷贝(js浅拷贝和深拷贝的方法)

  • 转让无形资产可以免税吗
  • 计税工资和实发工资不一样所得税
  • 环境保护税是什么科目
  • 非居民企业转让财产所得税
  • 应收退货成本会计科目代码
  • 小规模纳税人计提增值税
  • 货物尾款优惠如何计算
  • 电子缴税付款凭证怎么做账
  • 交通运输业安全员证
  • 应收账款因质量不符合退货应该实施什么审计程序
  • 商业汇票的样本
  • 化工类资质建筑企业有哪些
  • 纳税总额包括代扣代缴个人所得税吗
  • 小规模异地预缴增值税
  • 职工福利增值税的处理
  • 一般纳税人进项税额转出会计分录
  • 餐饮行业原材料
  • 建筑业商业保险受益人可以是公司吗
  • 外地派人来出差怎么报备
  • 日常管理的基本内容及方法是什么
  • 库存商品怎么结转损益
  • 银行年费计入管理费用还是财务费用
  • 发票分票怎么处理违章
  • 建筑公司如何结算成本
  • 哪些行业需要缴纳水利建设基金
  • 契税和增值税的计税依据
  • 预收账款科目
  • win10玩游戏时弹出error
  • 同一控股下的控股合并
  • 珠宝加工税率是多少
  • 差旅费报销需要提交的单据有
  • 关闭密码保护共享后又自动开启
  • 应收账款与主营业务收入的比率
  • 支付宝账单有什么作用
  • 2019年下半年中小学教师资格考试综合素质试题
  • 房产企业预售收入怎么做账务处理
  • 一只正在树上吃的苹果
  • 短期借款产生的利息进入总账吗
  • 小企业会计准则没有以前年度损益调整科目
  • 框架 frame
  • nlp baseline
  • html怎么用java
  • python类 方法
  • 非公党建党费收缴
  • 应付暂估账务处理
  • 进项未认证但已开票怎么办
  • Philtron: a PHP Proxy for HTTP
  • 开民工工资专户函模板
  • 电子发票查询真伪
  • 三项经费要包括哪三项
  • 费用多报销了,但已经给了,怎么办
  • 如何计算生产费用
  • 坏账准备?
  • 材料的采购成本包括
  • 报销未收到发票怎么做账
  • 财务费用是负数什么意思
  • 调试机器要注意事项
  • 劳务分包需要什么条件
  • 打官司产生的费用开成什么发票
  • 结算本月职工工资,其中生产甲产品
  • 收到投资款现金流量
  • 实名汽车票抵扣
  • 记账凭证的分类标准
  • sql2000怎么修改默认实例名
  • sqlserver not in 语句使程充崩溃
  • win7进bios设置启动盘
  • 强制关闭mac系统的快捷键
  • rhel6.5安装教程
  • ctd module
  • window10 系统安装
  • win7如何设置计算机自动开机
  • css在ie失效
  • android性能指标
  • 我决定放弃了你却对我笑了
  • nodejs实现HTTPS发起POST请求
  • 使用node写接口
  • jquery实现简单Tab切换菜单效果
  • 青岛地方税务局第三分局局长
  • 税务局纳税服务工作总结
  • 北京出租车发票微信怎么查真伪?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设