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

  • 拼多多上门取件退货要付运费吗(拼多多上门取件是哪个快递公司)

    拼多多上门取件退货要付运费吗(拼多多上门取件是哪个快递公司)

  • 电脑主机开不了机怎么办(电脑主机开不了机风扇转一下就停)

    电脑主机开不了机怎么办(电脑主机开不了机风扇转一下就停)

  • 在哪里领取微信红包封面(在哪里领取微信二维码)

    在哪里领取微信红包封面(在哪里领取微信二维码)

  • 荣耀V30PRO屏幕材质(荣耀v30pro屏幕材质硬度怎么样)

    荣耀V30PRO屏幕材质(荣耀v30pro屏幕材质硬度怎么样)

  • vr技术需要学什么专业(学vr技术出来干什么)

    vr技术需要学什么专业(学vr技术出来干什么)

  • 三星s20支持的5g频段(三星s20支持的充电功率)

    三星s20支持的5g频段(三星s20支持的充电功率)

  • b站怎么删除自己的视频(b站怎么删除自己发的评论)

    b站怎么删除自己的视频(b站怎么删除自己发的评论)

  • 华为wifi已连接但有感叹号(华为wifi已连接不可上网是什么原因)

    华为wifi已连接但有感叹号(华为wifi已连接不可上网是什么原因)

  • 演示文稿输出有哪几种形式(演示文稿中)

    演示文稿输出有哪几种形式(演示文稿中)

  • 微信如何发定位

    微信如何发定位

  • 微信限制支付功能多久恢复(微信限制支付功能怎么解除)

    微信限制支付功能多久恢复(微信限制支付功能怎么解除)

  • 插u盘的接口叫什么(u盘插口是什么样子的)

    插u盘的接口叫什么(u盘插口是什么样子的)

  • 手机后面的三个摄像头怎么用(手机后面的三个摄像头分别有什么用)

    手机后面的三个摄像头怎么用(手机后面的三个摄像头分别有什么用)

  • 苹果a2223是国行的吗(苹果a2222是什么版本)

    苹果a2223是国行的吗(苹果a2222是什么版本)

  • 快手pk受限制怎么回事(快手pk受限制怎么办)

    快手pk受限制怎么回事(快手pk受限制怎么办)

  • 华为mate30pro夜景模式怎么设置(华为mate30pro夜景教程)

    华为mate30pro夜景模式怎么设置(华为mate30pro夜景教程)

  • 苹果6原装电池多少毫安(苹果6原装电池多少钱一块)

    苹果6原装电池多少毫安(苹果6原装电池多少钱一块)

  • 华为手机小艺怎么叫出来(华为手机小艺怎么召唤出来?)

    华为手机小艺怎么叫出来(华为手机小艺怎么召唤出来?)

  • oppo a9有呼吸灯吗(oppo a9手机有没有呼吸灯)

    oppo a9有呼吸灯吗(oppo a9手机有没有呼吸灯)

  • 华为升降摄像头怎么用(华为升降摄像头怎么关闭声音)

    华为升降摄像头怎么用(华为升降摄像头怎么关闭声音)

  • 苹果6能定位华为手机吗(苹果手机能定位华为吗)

    苹果6能定位华为手机吗(苹果手机能定位华为吗)

  • 电脑怎么安装喜马拉雅(电脑 怎么安装)

    电脑怎么安装喜马拉雅(电脑 怎么安装)

  • 小米mix3快充多少w(小米mix3快充多少a)

    小米mix3快充多少w(小米mix3快充多少a)

  • 快手被降权怎么办(快手降权了找谁可以解决)

    快手被降权怎么办(快手降权了找谁可以解决)

  • 税金及附加现金流量表
  • 公司食堂辅助账怎么记账
  • 财务管理考试时间多长
  • 机械设备买回来怎么消毒
  • 一般纳税人支付给小规模纳税人的税率
  • 退增值税政策
  • 出售房屋缴纳的印花税
  • 折旧完的固定资产出售
  • 怎么计算收益率
  • 流动资产投资的特点有
  • 财务发票已开但钱未到位怎么处理?
  • 定额发票用来干嘛
  • 购买办公家具合同
  • 房租开的专票怎么做账
  • 饭店取得的烟酒是什么
  • 工厂新增项目需要立项、环境评价
  • 小规模纳税人免税额度是多少
  • 收到退回的投标保证金
  • 电脑玩游戏卡怎么弄
  • wifi认证失败怎么办
  • 车间机物料消耗属于间接生产费用吗
  • 出租房子收入计入什么科目
  • 周转材料属于什么科目
  • win11安装不显示wifi
  • 下载的压缩文件打不开
  • php语法和常用的函数
  • 外汇延期收款办理操作指南
  • window10解压
  • ntkrpamp.exe
  • nkvmon.exe - nkvmon是什么进程 有什么用
  • 发财树叶子发黄怎样补救
  • 企业要普通发票有什么用
  • 开发商违法
  • 快速制作一个演示文稿可用什么
  • php获取当前时间戳函数
  • ant design vue 表单
  • php oauth2 单点登录
  • PHP中使用什么关键字声明变量的作用域为全局
  • 新企业所得税实施细则
  • 去年的普票可以开红字吗
  • 水电费发票如何分配给客户
  • mongodb数据库的作用
  • okhttp源码
  • 建筑业成本核算流程
  • 报销的注意事项
  • 资产负债表中的货币资金怎么算
  • 企业投资收益要交增值税吗
  • 费用科目什么意思
  • access2010加密解密数据库时
  • 什么叫境外地区
  • 视同销售收入是纳税调整项目吗?
  • 待报解啥意思
  • 工程项目甲方是什么意思
  • 购买办公用品如何节约成本
  • 公司开业装修费会计分录
  • 房产税征收标准2020
  • 租赁行业的增值税率
  • 电商账务怎么做
  • 进口增值税如何勾选认证
  • 入库单金额写错可以改吗
  • 专项应付款二级科目
  • 货运代理服务开票
  • 亏损弥补的新旧不同
  • 职工教育经费开专票可以抵扣吗
  • 支票填写的规范与常识
  • mysql错误代码1418
  • mysql教程入门
  • UBUNTU怎么安装MPEG-4解码器
  • mac app store打开一片空白
  • xp系统怎么把ie浏览器放到桌面
  • centos6.1安装
  • 找回丢失的抖音如何恢复抖音
  • win8windows设置在哪里
  • win7电脑弹窗多怎么解决
  • 从零开始咋样
  • javascript面向对象编程
  • python教程100例
  • linux pop
  • json遍历对象集合
  • 从日本带化妆品回国会被扣吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设