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

  • 2021淘宝618养猫合伙能升满级吗(2021淘宝618养猫终极造型)

    2021淘宝618养猫合伙能升满级吗(2021淘宝618养猫终极造型)

  • 苹果13pro怎么设置指纹解锁(苹果13pro怎么设置震动)

    苹果13pro怎么设置指纹解锁(苹果13pro怎么设置震动)

  • 微信拉黑后对方发信息会显示什么内容(微信拉黑后对方还有聊天记录吗)

    微信拉黑后对方发信息会显示什么内容(微信拉黑后对方还有聊天记录吗)

  • AirPods左右耳朵耗电不一样(airpods两只耳朵)

    AirPods左右耳朵耗电不一样(airpods两只耳朵)

  • 抖音的背景虚化在哪里(抖音的背景虚化怎么弄)

    抖音的背景虚化在哪里(抖音的背景虚化怎么弄)

  • 引用运算符有哪些(引用运算符有哪几个)

    引用运算符有哪些(引用运算符有哪几个)

  • 苹果自带的快捷被删了(苹果自带的快捷指令)

    苹果自带的快捷被删了(苹果自带的快捷指令)

  • 苹果手机日版跟国行有什么区别(苹果手机日版跟美版哪个好)

    苹果手机日版跟国行有什么区别(苹果手机日版跟美版哪个好)

  • 苹果nq开头是什么版本(苹果型号nqa开头是啥)

    苹果nq开头是什么版本(苹果型号nqa开头是啥)

  • 苹果x可以升级12.4.1吗(苹果X可以升级16.2系统吗)

    苹果x可以升级12.4.1吗(苹果X可以升级16.2系统吗)

  • 在excel中工作簿是指(在excel中工作簿存盘时默认的文件扩展名是)

    在excel中工作簿是指(在excel中工作簿存盘时默认的文件扩展名是)

  • dp75sdi是kindle的哪个型号(kindledp755di是第几代)

    dp75sdi是kindle的哪个型号(kindledp755di是第几代)

  • word页面并排显示(word文档页面并列怎么变成竖排)

    word页面并排显示(word文档页面并列怎么变成竖排)

  • 手机怎么换群头像(手机怎么换群头像照片)

    手机怎么换群头像(手机怎么换群头像照片)

  • ios12如何清理数据(ios12怎么清理内存)

    ios12如何清理数据(ios12怎么清理内存)

  • 京东怎么延长收货(京东上怎么延长收货时间)

    京东怎么延长收货(京东上怎么延长收货时间)

  • 手机镀膜怎么去除(手机镀膜撕不下来妙招)

    手机镀膜怎么去除(手机镀膜撕不下来妙招)

  • 苹果x需要贴膜吗(苹果x贴膜后面容识别不了)

    苹果x需要贴膜吗(苹果x贴膜后面容识别不了)

  • 一个4g基站能覆盖多远(一个4g基站能覆盖多少用户)

    一个4g基站能覆盖多远(一个4g基站能覆盖多少用户)

  • 云拨电话怎么隐藏号码(云拨电话怎么隐藏自己电话号码)

    云拨电话怎么隐藏号码(云拨电话怎么隐藏自己电话号码)

  • 屏幕时间哪里设置(屏幕时间怎样设计)

    屏幕时间哪里设置(屏幕时间怎样设计)

  • 移动经纪人怎么换头像(移动经纪人怎么发布房源)

    移动经纪人怎么换头像(移动经纪人怎么发布房源)

  • 苹果电脑的蓝牙在哪里打开(苹果电脑的蓝牙鼠标没反应)

    苹果电脑的蓝牙在哪里打开(苹果电脑的蓝牙鼠标没反应)

  • vue开发中,数据更新,但视图不刷新(vue数据处理在哪个阶段)

    vue开发中,数据更新,但视图不刷新(vue数据处理在哪个阶段)

  • 车船税每年都要交吗,一般是多少钱交强险可以晚交吗
  • 什么叫做增值税进项税额
  • 应付职工薪酬明细账模板
  • 员工的生日津贴怎么发
  • 年终奖报表怎么做
  • 员工报销没有发票怎么入账
  • 应交税费贷方有余额,怎么销账
  • 企业所得税季报可以更正吗
  • 用友软件销售操作流程
  • 开办费用怎么确定摊销年限及财务处理分析
  • 生产车间维修费
  • 应收账款预付账款属于什么科目
  • 年所得税12万申报
  • 长期股权投资撤股怎么处理
  • 建账实收资本怎么处理
  • 税控盘管理费会计分录
  • PRISMSTA.EXE - PRISMSTA是什么进程 有什么用
  • Win10怎么关闭搜索框
  • 挑主板要注意什么
  • 其他应付款付款后分录
  • 航空公司收取什么费
  • 前端向后端发送请求
  • 劳务公司开发票,劳务公司怎么转取收入
  • phpwind教程
  • sesvc.exe是什么进程
  • 甲方工程扣款如何处理
  • macOS Big Sur 11.4 Beta 1(版本号20F5046g)正式发布
  • wrme.exe是什么
  • 异常生物见闻录
  • framework启动
  • 投资收益会计准则
  • ruoyi框架快速入门
  • 库存商品盘亏计入哪个科目
  • 人力资源公司的招聘专员怎么样
  • 税务申报显示已申报
  • 其他应收款的会计分录有哪些
  • 织梦如何使用
  • 股东投钱一般怎么投
  • 作废发票要不回来了怎么办
  • 接受银行承兑汇票的流程
  • 酒店客房成本计算公式
  • 会计年度对账
  • 其他权益工具影响所得税吗
  • 银行转账手续费一览表
  • 小规模纳税人减按1%怎么计算
  • 收到发票冲红怎么做分录
  • 递延所得税资产和所得税费用的关系
  • 汇算清缴如何调到不退不补
  • 本期盈余结转会亏损吗
  • 租房买的中央空调怎么用
  • mysql为什么很受大家青睐
  • mac闹钟app
  • 怎么操作win10系统
  • macbookair登陆
  • windows 8.1 build 9600
  • windows7 读不了u盘怎么解决
  • window7系统中的桌面指什么
  • linux常用命令grep
  • windows7如何安装net framework4.0
  • windows 10 build 21382
  • nodejs爬取数据
  • perl chr
  • Unity3D游戏开发培训课程大纲
  • opengl es 2.0是什么
  • nodejs mysql orm
  • sell脚本
  • node.js 10实战
  • 在文件中偏移量为
  • python运行时间的几种方法
  • 国家税务总局全国增值税发票官网
  • 税务局开展活动
  • 净化水服务税务分类
  • 电信业务发票
  • 无锡地铁时速多少公里
  • 电子税务局辽宁省
  • 长春市税务局领导
  • 财政资金存在问题
  • 四季度预缴申报表
  • 在哪里查看法律
  • 上海房产税2021征收对象
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设