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

  • 苹果用高通基带的机型(苹果用高通基带怎么样)

    苹果用高通基带的机型(苹果用高通基带怎么样)

  • 华为什么手机支持lr键(华为什么手机支持车载无线充电)

    华为什么手机支持lr键(华为什么手机支持车载无线充电)

  • 微信被拉黑打过去会是怎样的(微信被拉黑打过电话提示)

    微信被拉黑打过去会是怎样的(微信被拉黑打过电话提示)

  • 哈罗单车忘记锁怎么办(哈罗单车忘记锁车怎么处理)

    哈罗单车忘记锁怎么办(哈罗单车忘记锁车怎么处理)

  • 抖音分享视频是什么意思(抖音分享视频是每天任务吗)

    抖音分享视频是什么意思(抖音分享视频是每天任务吗)

  • 华为电脑死机怎么重启(华为电脑开机死机)

    华为电脑死机怎么重启(华为电脑开机死机)

  • 华为喇叭突然沙哑(华为手机喇叭突然坏了)

    华为喇叭突然沙哑(华为手机喇叭突然坏了)

  • 黑鲨手机是什么系统(黑鲨手机是什么旗下的)

    黑鲨手机是什么系统(黑鲨手机是什么旗下的)

  • vivo手机收音机在哪里(vivo手机收音机功能在哪里)

    vivo手机收音机在哪里(vivo手机收音机功能在哪里)

  • 在快手上把别人加入黑名单别人会知道吗(在快手上把别人的身份证发上去并骂人)

    在快手上把别人加入黑名单别人会知道吗(在快手上把别人的身份证发上去并骂人)

  • 酷安app是干嘛用的(酷安app是做什么的)

    酷安app是干嘛用的(酷安app是做什么的)

  • qq超市为什么不能玩了(qq超市是不是下架了)

    qq超市为什么不能玩了(qq超市是不是下架了)

  • 小米手机媒体音量没声音怎么办(小米手机媒体音量突然变小怎么办)

    小米手机媒体音量没声音怎么办(小米手机媒体音量突然变小怎么办)

  • 苹果11怎么开微信分身(苹果11怎么开微距)

    苹果11怎么开微信分身(苹果11怎么开微距)

  • 高德地图公司总部在哪(高德地图公司总部地址电话)

    高德地图公司总部在哪(高德地图公司总部地址电话)

  • 一个u盘能做几个系统启动盘(一个u盘能做几个系统安装盘)

    一个u盘能做几个系统启动盘(一个u盘能做几个系统安装盘)

  • 手机可以当电视遥控器吗(手机可以当电视游戏手柄吗)

    手机可以当电视遥控器吗(手机可以当电视游戏手柄吗)

  • 手机淘宝怎么实名认证(手机淘宝怎么进行实名认证)

    手机淘宝怎么实名认证(手机淘宝怎么进行实名认证)

  • 快手怎么找回删除作品(快手怎么找回删除的照片)

    快手怎么找回删除作品(快手怎么找回删除的照片)

  • ipad怎么查电池损耗(苹果ipad怎么查电池)

    ipad怎么查电池损耗(苹果ipad怎么查电池)

  • beatsx恢复出厂设置

    beatsx恢复出厂设置

  • 快手不用身份证怎么直播(快手不绑定身份证)

    快手不用身份证怎么直播(快手不绑定身份证)

  • haptic touch如何使用(haptic touch如何开启)

    haptic touch如何使用(haptic touch如何开启)

  • 圣克鲁斯岛的查尔斯达尔文研究站内从卵中孵化出来的平松岛龟,厄瓜多尔加拉帕戈斯群岛 (© Pete Oxford/Minden Pictures)(圣克鲁斯岛战役)

    圣克鲁斯岛的查尔斯达尔文研究站内从卵中孵化出来的平松岛龟,厄瓜多尔加拉帕戈斯群岛 (© Pete Oxford/Minden Pictures)(圣克鲁斯岛战役)

  • Echarts直角坐标系x轴y轴属性设置大全(echart横坐标)

    Echarts直角坐标系x轴y轴属性设置大全(echart横坐标)

  • 小规模免征增值税额度2023
  • 应交税费应交增值税明细账怎么填
  • 年末结转净利润
  • 报账单大写金额填写方式
  • 上年结转未抵扣
  • 外购货物用于什么不得抵扣进项
  • 资产季末值
  • 上一年的收入少做账了该怎么调
  • 有营业执照有什么好处吗?
  • 劳务派遣人员工资可以由用工单位发放么
  • 怎么计提应交税费
  • 收到进项发票如何记账
  • 成品盘盈盘亏的会计分录
  • 公司改变工资结构变相降工资怎么办
  • 企业间贴现手续怎么办理
  • 未做工程税费如何计算
  • 委托贷款利息收入账务处理
  • 重复缴税怎么做账
  • 农业水费管理使用办法
  • 建筑企业跨地区
  • 劳务公司差额征税怎么计算
  • 没建账的个体户如何交个人所得税?
  • 营改增后哪些费用可以抵扣
  • 油品沥青消费税征收范围
  • 奖金个人所得税筹划
  • 建筑行业没有库存要做暂估成本怎么做?
  • 没有及时对公账户
  • 法人向公司借款用途怎么写
  • 怎么进行现金流量分析
  • 华为微信铃声怎么设置不跟随系统
  • mac outlook怎么设置邮箱签名
  • 研发费加计扣除申报表怎么填
  • 有限公司注册资金多少好
  • php的编辑工具有哪些
  • 电脑每次开机都要选择系统怎么办
  • PHP:proc_close()的用法_命令行函数
  • 存货成本在哪个表里
  • 如何写煎荷包蛋过程
  • 什么叫相机标定
  • javaweb项目登录页面不跳转
  • 尚硅谷百度贴吧
  • acc字幕文件怎么转换srt字幕
  • id命令的哪个参数可显示用户账号的uid信息
  • 出口增值税申报了
  • 小规模餐饮业如何征税
  • 揭秘如何投屏纽约时代广场
  • 劳务费怎么做账务处理
  • 小规模纳税人低值易耗品摊销方法
  • 代销商品怎么开票
  • 购买柴油预付卡怎么入账
  • 仓库费用计入什么科目
  • 收到劳务费
  • 商业成本会计如何记账
  • 企业会计准则2023电子版
  • mysql 5.6 5.7 性能
  • macpr预设
  • mac支持的字体格式
  • 重装系统 xp
  • mac os xv10.11
  • win8如何切换用户登录
  • win10系统以太网连接图标不见了怎么办
  • win7系统无线鼠标不能连接
  • opengl教程48讲
  • Windows设置在哪里
  • androidtime
  • listview.selecteditems
  • git 常用指令
  • 使用css实现全兼容的方法
  • css透明属性详解怎么写
  • js响应式布局
  • 对于javascript理解
  • python生成器怎么用
  • unity导入max文件
  • android:fragment
  • python 管理系统
  • 什么叫银税互动
  • 税控发票开票系统对电脑配置有要求吗?
  • 单位首次交社保医疗要多久才能享受
  • 广东省地税总局领导班子
  • 利润表中所得税费用包括
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设