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

  • 谈一谈微博推广营销的4点体会总结 (微博推广方案)

    谈一谈微博推广营销的4点体会总结 (微博推广方案)

  • xr支持北斗导航功能吗(苹果xr可以用北斗导航)

    xr支持北斗导航功能吗(苹果xr可以用北斗导航)

  • 抖音创作者服务中心在哪(抖音创作者服务中心在哪里打开)

    抖音创作者服务中心在哪(抖音创作者服务中心在哪里打开)

  • 录音机程序的文件扩展名(录音机的文件名叫什么)

    录音机程序的文件扩展名(录音机的文件名叫什么)

  • ipad没有设备管理怎下载授权(ipad2019设备管理不见了)

    ipad没有设备管理怎下载授权(ipad2019设备管理不见了)

  • 苹果7p怎么设置来电铃声(苹果7P怎么设置微信密码锁屏)

    苹果7p怎么设置来电铃声(苹果7P怎么设置微信密码锁屏)

  • colal10华为是什么型号(华为colal10是什么型号多少钱)

    colal10华为是什么型号(华为colal10是什么型号多少钱)

  • 小米10se什么时候出来(小米10se预计上市时间)

    小米10se什么时候出来(小米10se预计上市时间)

  • 抖音播放量一个ID算一次吗(抖音播放量一个人看多次算吗)

    抖音播放量一个ID算一次吗(抖音播放量一个人看多次算吗)

  • 钉钉群会议怎么看回放(钉钉群会议怎么改名字)

    钉钉群会议怎么看回放(钉钉群会议怎么改名字)

  • 瓦尔塔电池蓝标和黄标有什么区别(瓦尔塔电池蓝标和银标怎么区分)

    瓦尔塔电池蓝标和黄标有什么区别(瓦尔塔电池蓝标和银标怎么区分)

  • 光猫怎么连接电脑(光猫怎么连接电视盒子)

    光猫怎么连接电脑(光猫怎么连接电视盒子)

  • 保存到云端是什么意思(保存在云端的文件在哪里)

    保存到云端是什么意思(保存在云端的文件在哪里)

  • ipad要充多久才能开机(ipad要充多久才能自动开机关机)

    ipad要充多久才能开机(ipad要充多久才能自动开机关机)

  • vivox30左边的按键是什么(vivox30左边的按键怎么设置)

    vivox30左边的按键是什么(vivox30左边的按键怎么设置)

  • 便携式手机相片打印机需要墨吗(便携拍照)

    便携式手机相片打印机需要墨吗(便携拍照)

  • 华为服务框架有用吗(华为服务框架有什么用)

    华为服务框架有用吗(华为服务框架有什么用)

  • 拼多多闪电退货啥意思(拼多多闪电退货钱先退吗)

    拼多多闪电退货啥意思(拼多多闪电退货钱先退吗)

  • 手机上hd1怎么取消(怎么才把手机上的hd去取呢)

    手机上hd1怎么取消(怎么才把手机上的hd去取呢)

  • 郑州有5g网络吗(郑州有5g网络吗知乎)

    郑州有5g网络吗(郑州有5g网络吗知乎)

  • wetool怎么加人(wetool怎么加群)

    wetool怎么加人(wetool怎么加群)

  • 若依ruoyi——手把手教你制作自己的管理系统【二、修改样式】(若依官网)

    若依ruoyi——手把手教你制作自己的管理系统【二、修改样式】(若依官网)

  • torch.cuda常用指令(torch.cuda.is_available())

    torch.cuda常用指令(torch.cuda.is_available())

  • 一文了解Python序列化(python的顺序)

    一文了解Python序列化(python的顺序)

  • 一般纳税人注销公司麻烦吗
  • 提成过高
  • 有限合伙需要报增值税吗
  • 增值税 抵扣联
  • 劳务什么情况下会多扣税
  • 软件销售利润
  • 外经证预交税怎么算
  • 公司现金支付管理办法
  • 因员工过失造成第三方损失
  • 定额备用金补付会计分录怎么写?
  • 暂估进项税额
  • 收到银行退回的银行汇票多余款
  • 免费的企业
  • 增值税税率
  • 当期可抵扣进项税额包括进项转出额吗
  • 出租车库收入是否需要计算缴纳土地增值税
  • 集团公司内部无偿借贷增值税
  • 支付工程款时有哪些费用
  • 服务类的公司有哪些
  • 纯粮食白酒广告语
  • 出口视同内销补缴增值税会计分录?
  • windows 10如何使用
  • win11重置此电脑失败
  • window如何打开控制台
  • 电脑中病毒了怎么重装系统
  • 物业公司的水电工工作职责
  • PHP:mb_ereg_search()的用法_mbstring函数
  • 商会收到的会费要交企业所得税
  • 销货方发票红冲操作流程
  • 男人喜欢什么样的女人最容易动心
  • 表单校验html5
  • 商业承兑可以去银行吗
  • 资产减值损失影响当期利润吗
  • 增值税留抵税额计入什么科目
  • 企业所得税核定征收方法有哪两种
  • 预付装修费的会计处理分录
  • 毛利率为负也可以投资吗
  • 前端file对象
  • 以前年度的销售退回,冲减哪年的
  • 程序员神器
  • checksum 命令
  • php for break
  • 狂神说css笔记
  • 企业所得税资产总额根据什么填
  • java泛型简单例子
  • 新购入的汽车需要年检吗
  • 在建工程减值准备是否可以转回
  • 确认递延所得税负债的分录
  • 报表里主营业务怎么填
  • 织梦添加文章如何修改高级参数
  • 社保所属期怎么填
  • 保理属于什么行业分类
  • 电子承兑对方拒绝签收多久能到账
  • 小规模纳税人企业所得税优惠政策最新2023
  • 设备服务费
  • 建筑安装印花
  • 汽车运输企业交什么税
  • 发票报销有限制吗
  • 研发支出属于什么要素
  • 一般纳税人开错税率严重吗
  • 行权期行权条件成就什么意思
  • 设置行政机构的主要依据是
  • win1020h2版本是正式版吗
  • WINDOWS10系统怎样看主板
  • cocos2dx schedule
  • css全局样式基础代码
  • font:inherit
  • python框架教程
  • 如何在python中运行程序
  • nodejs quic
  • linux shell 输出到文件
  • 小助手是什么软件
  • python中scipy用法
  • js写日期
  • 山西省地方税务局 先进 文明 李家庄税务所
  • 网络发票开票系统怎么设置?
  • 处级工作调动用什么手续
  • 暂估收入入账冲回如何会计分录
  • 重庆市深化新时代教育评价改革幼儿园
  • 个人有关事项核查情况的报告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设