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

  • 小米10青春版如何插卡(小米10青春版如何关闭纯净模式)

    小米10青春版如何插卡(小米10青春版如何关闭纯净模式)

  • 电脑重置后office还能用吗(电脑重置后office不能用怎么办)

    电脑重置后office还能用吗(电脑重置后office不能用怎么办)

  • 包过滤防火墙工作在 OSI 的哪一层(包过滤防火墙工作在)

    包过滤防火墙工作在 OSI 的哪一层(包过滤防火墙工作在)

  • 抖音狂点爱心有什么用(抖音点爱心有钱吗)

    抖音狂点爱心有什么用(抖音点爱心有钱吗)

  • 割接数据是什么意思(割切数据是什么意思)

    割接数据是什么意思(割切数据是什么意思)

  • 门户网站是什么意思(门户网站是什么新媒体类型)

    门户网站是什么意思(门户网站是什么新媒体类型)

  • 微信流量充值自动退回(微信的流量充值)

    微信流量充值自动退回(微信的流量充值)

  • 为什么微信突然发不了信息怎么办(为什么微信突然下线了 再重新登录没提示)

    为什么微信突然发不了信息怎么办(为什么微信突然下线了 再重新登录没提示)

  • 三星9200什么型号(三星920s)

    三星9200什么型号(三星920s)

  • a12和a13有什么区别(a12与a13差别大吗)

    a12和a13有什么区别(a12与a13差别大吗)

  • 数据和wifi同时开启优先使用哪个(wifi和数据能一起用吗)

    数据和wifi同时开启优先使用哪个(wifi和数据能一起用吗)

  • 手机卡一卡二怎么设置(手机卡一卡二怎么设置铃声)

    手机卡一卡二怎么设置(手机卡一卡二怎么设置铃声)

  • 电脑显示器改电视方法(电脑显示器改电视没有声音怎么办)

    电脑显示器改电视方法(电脑显示器改电视没有声音怎么办)

  • 手机串号是什么(手机串号是什么意思?怎么查手机的串号?)

    手机串号是什么(手机串号是什么意思?怎么查手机的串号?)

  • intmain和main的区别(intmain与main)

    intmain和main的区别(intmain与main)

  • 拼多多限购在哪里设置(拼多多限购在哪看)

    拼多多限购在哪里设置(拼多多限购在哪看)

  • xr为什么下载不了小红书

    xr为什么下载不了小红书

  • 华为mate20忘记锁屏密码怎么解锁(华为mate20忘记锁屏图案解锁怎么办)

    华为mate20忘记锁屏密码怎么解锁(华为mate20忘记锁屏图案解锁怎么办)

  • 三星s9支持分屏吗(三星s9手机分屏功能怎么用)

    三星s9支持分屏吗(三星s9手机分屏功能怎么用)

  • p30什么时候上市(p30什么时候上市时间)

    p30什么时候上市(p30什么时候上市时间)

  • cpu怎么装(CPU怎么装回去)

    cpu怎么装(CPU怎么装回去)

  • qq画画功能在哪里(qq画画图片大全)

    qq画画功能在哪里(qq画画图片大全)

  • 纯前端文档预览,还要支持所有主流格式,有这一篇就足够了(前端文件预览)

    纯前端文档预览,还要支持所有主流格式,有这一篇就足够了(前端文件预览)

  • 森佩尔森林公园中的黑海杜鹃,德国吕根岛 (© Sandra Bartocha/Minden Pictures)(森佩塑胶)

    森佩尔森林公园中的黑海杜鹃,德国吕根岛 (© Sandra Bartocha/Minden Pictures)(森佩塑胶)

  • 增值税16%降到13%的留抵退税的情况说明咋写
  • 企业所得税年度汇算
  • 进口洋酒能存放多少年
  • 非金银首饰以旧换新增值税
  • 承兑汇票用开发票吗
  • 一般纳税人材料销售税率
  • 分公司可以享受当地优惠吗?
  • 固定资产清理属于什么科目
  • 购销业务账务处理
  • 小规模纳税人企业所得税起征点
  • 增值税发票委托公司开具
  • 住宿费专用发票会计分录
  • 工会开发票有税号吗?
  • 2021年个体工商户的税率是多少
  • 快速查看财务费用借贷有误的方法
  • 挂靠公司代收入税金如何做分录?
  • 知识产权代理公司怎么盈利
  • 初级考试备考计划
  • 分支机构增值税汇总纳税怎么申报?
  • windows缺失
  • 所得税汇算清缴后如何调整报表
  • u启动pe装机工具如何重装系统win10
  • 减半征收所得税的有哪些
  • 代理报关费会计怎么做账
  • 应缴纳增值税计什么科目
  • 跨年收到退回增值税税款的账务处理
  • 进程mmc.exe
  • 公网访问内网主机
  • 建筑安装发票可以外地开吗
  • pytorch说明文档
  • hpzts04.exe是什么进程 有什么作用 hpzts04进程查询
  • 巴伐利亚森林国家公园钍自然真正自然
  • 预提费用新会计准则叫什么科目
  • 史上最贵的微博
  • 前端面试题什么是网络协议
  • smarty模板引擎
  • 功能强大的php文件有哪些
  • 应收账款科目怎么看
  • upf命令
  • php 密码
  • 商场返点怎么核算
  • 支付水电费如何做账务处理
  • element-ui tree 异步树实现勾选自动展开、指定展开、指定勾选
  • 错开发票所需要提供的资料和时效要求是?
  • 社保年度申报错误可以调整吗
  • 所得税预缴怎么申报
  • 新会计准则其他收益核算内容
  • 影响无形资产的营业利润怎么算
  • 财务管理税后利息费用都包含什么
  • 本月计提费用,发票下个月到可以吗
  • 房屋租赁协议印花税怎么计算
  • 跨年成本少结转如何调整
  • 报销单会计分录怎么写
  • 一般纳税人在外地预缴税款,预缴多了需不需退税
  • 公账直接转给个人,对公司有什么影响吗
  • 应收票据和应付票据可以对冲吗
  • 财务独立核算的条件
  • 所有进项增值税怎么申报
  • 航天金税盘维护费发票在哪打印
  • mac怎么用浏览器
  • linux深入理解
  • xp系统怎么弄成win7
  • ubuntu怎么打开系统设置
  • win8 网络连接
  • linux acl设置
  • win10系统升级后桌面图标变大
  • 命令行查看硬盘序列号
  • win7关闭右下角操作中心
  • 用360可以装win7系统吗
  • cocos creator性能
  • unity进阶之路
  • perl怎么读取文件
  • nodejs 调用python代码
  • jquery自定义表单
  • 怎样用python
  • python读取linux文件
  • 党建引领结对共建生态
  • 土地增值税按什么价格
  • 外资企业怎样
  • 没工作个人所得税怎么交
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设