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

  • 荣耀30pro有红外人脸识别功能吗(荣耀30pro有红外线功能吗)

    荣耀30pro有红外人脸识别功能吗(荣耀30pro有红外线功能吗)

  • 荣耀10支持nfc功能吗(华为荣耀10支持nfc)

    荣耀10支持nfc功能吗(华为荣耀10支持nfc)

  • 隔空投送只能发不能收(隔空投送只能发给联系人吗)

    隔空投送只能发不能收(隔空投送只能发给联系人吗)

  • 抖音怎么下载视频到手机相册(抖音怎么下载视频没有抖音号)

    抖音怎么下载视频到手机相册(抖音怎么下载视频没有抖音号)

  • 四曲面屏是什么意思(四曲面屏容易碎吗)

    四曲面屏是什么意思(四曲面屏容易碎吗)

  • 苹果换修无忧月付版什么意思(苹果换修无忧月卡多少钱)

    苹果换修无忧月付版什么意思(苹果换修无忧月卡多少钱)

  • oppo手机发烫如何解决(oppo手机发烫严重会发生什么)

    oppo手机发烫如何解决(oppo手机发烫严重会发生什么)

  • cad如何生成方格网(cad怎么生成)

    cad如何生成方格网(cad怎么生成)

  • 美版有锁机可以升级系统吗(美版有锁机可以还原吗)

    美版有锁机可以升级系统吗(美版有锁机可以还原吗)

  • ipad如何关闭wps副屏(ipad如何关闭应用程序)

    ipad如何关闭wps副屏(ipad如何关闭应用程序)

  • 微信红包多久自动退回(微信红包多久自动归还)

    微信红包多久自动退回(微信红包多久自动归还)

  • openapi是什么文件夹(openapi是什么文件夹可以删除吗)

    openapi是什么文件夹(openapi是什么文件夹可以删除吗)

  • 店铺层级对流量的影响(店铺的等级和流量的分配)

    店铺层级对流量的影响(店铺的等级和流量的分配)

  • 华为手机屏幕不灵敏是怎么回事(华为手机屏幕不停的自动跳)

    华为手机屏幕不灵敏是怎么回事(华为手机屏幕不停的自动跳)

  • 华为手机突然只能2g(华为手机突然只能仅限紧急呼叫)

    华为手机突然只能2g(华为手机突然只能仅限紧急呼叫)

  • 开热点为什么别人用不了(开热点为什么别人用着很卡)

    开热点为什么别人用不了(开热点为什么别人用着很卡)

  • 手机怎样订高铁票(手机怎么订高铁票)

    手机怎样订高铁票(手机怎么订高铁票)

  • 苹果系统占用内存怎么删除(苹果系统占用内存在哪里看)

    苹果系统占用内存怎么删除(苹果系统占用内存在哪里看)

  • vivox21是多少英寸的(vivox21是多大屏幕尺寸)

    vivox21是多少英寸的(vivox21是多大屏幕尺寸)

  • 什么是仿生芯片(什么是仿生芯片技术)

    什么是仿生芯片(什么是仿生芯片技术)

  • 苹果系统怎么玩安卓区(苹果系统怎么玩皮卡堂)

    苹果系统怎么玩安卓区(苹果系统怎么玩皮卡堂)

  • 小米手机通知不显示内容(小米手机没有通知)

    小米手机通知不显示内容(小米手机没有通知)

  • 闪烁保护烧屏吗(闪烁保护烧屏吗怎么关)

    闪烁保护烧屏吗(闪烁保护烧屏吗怎么关)

  • PHPCMS上传错误413?(http上传错误)

    PHPCMS上传错误413?(http上传错误)

  • 金税盘开票系统怎么增加税目
  • 计算本月所得税税率为25%
  • 促销费用计入销售费用哪个科目
  • 所得税汇算清缴账务处理
  • 跨月专用发票怎么冲销
  • 哪些小规模纳税人可以自行开具增值税
  • 出让固定资产怎样计算增值税
  • 商业承兑汇票托收凭证怎么做分录
  • 建筑企业劳保计入哪个科目?
  • 境外支付佣金如何开发票
  • 股权转让个税是转让方交吗
  • 小规模纳税人需要汇算清缴吗
  • 个人独资企业租车缴纳税金
  • 专家评审费报销仅附签字笔迹相似
  • 加班餐费税前扣除问题
  • win11系统怎么投屏
  • php实战开发教程
  • win10磁盘碎片整理打不开
  • ghoststartservice.exe是什么进程 有什么作用 ghoststartservice进程查询
  • PHP:pcntl_wstopsig()的用法_PCNTL函数
  • 应收账款怎么做分录
  • 业务招待费财务管理制度
  • 增值税税收类型有哪些
  • php数组去重函数
  • 固定资产一览表
  • 珊瑚礁区域常有的鱼类
  • 科托儿古城
  • 承兑汇票和现汇
  • phpmailer 使用
  • 应收账款占用资金的应计利息变动额
  • 多域名指向同一ip有问题吗
  • 基于深度学习的轴承寿命预测实践,开发CNN、融合LSTM/GRU/ATTENTION
  • 会计打印发票请求怎么写
  • 增值税专用发票怎么开
  • 没有关系怎么表达
  • GCN经典论文笔记:Semi-Supervised Classification with Graph Convolutional Networks
  • php隐藏图片地址
  • thinkphpgui
  • 企业怎么可以合理避税?
  • 企业账户有什么好处
  • 未开票收入为负数是什么意思
  • 出口抵减内销产品应纳税额怎么结转
  • 更新php文件
  • 科技局创业扶持资金
  • 个税赡养老人作废后无法修改
  • 套期保值和套期图利
  • 企业摊销无形资产价值时的会计处理
  • 个人所得税完整申报流程
  • 会计付租金会计分录
  • 发票审核中是什么意思
  • 工资个税什么时候用综合所得公式计算
  • 执行迟延履行金的规定
  • 走逃失联企业管理办法
  • 劳务简易征收最新政策2020
  • 外资企业的含义
  • 企业的案例分析报告
  • 安装设备是干嘛的
  • 出纳建账账户名称怎么写
  • 电脑怎么安装安卓模拟器
  • windows2.0下载
  • linux防火墙放行
  • win102h20
  • win10无法回退到以前的版本怎么办
  • debian怎么用
  • win10系统无法打开设置
  • Extjs Label的 fieldLabel和html属性值对齐的方法
  • shell程序中定义的函数能不能有参数
  • Unity3D游戏开发引擎
  • jQuery实现CheckBox全选、全不选功能
  • 公认的经典
  • jQuery Checkbox 全选 反选的简单实例
  • shell遍历sql查询结果
  • python 基础 详细
  • select ui
  • 江苏电子税务局官网登录入口
  • 国家税务总局,河北省税务局
  • 税务处理决定书属于行政处罚吗
  • 税务登记证办理
  • 地税局属于市直单位吗
  • 计算出口退税的免抵税额,不计征城市维护建设税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设