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

  • win7定时关机怎么禁用(win7定时关机怎么设置)(win7定时自动关机 命令)

    win7定时关机怎么禁用(win7定时关机怎么设置)(win7定时自动关机 命令)

  • 抖音评价可以删除吗(抖音评价删除后怎么再修改)

    抖音评价可以删除吗(抖音评价删除后怎么再修改)

  • iphone 12 pro max是双卡双待吗

    iphone 12 pro max是双卡双待吗

  • 华为手机如何切换数据网络(华为手机如何切换页面)

    华为手机如何切换数据网络(华为手机如何切换页面)

  • 抖音一般发布多久开始推送(抖音一般发布多久别人就看不到了)

    抖音一般发布多久开始推送(抖音一般发布多久别人就看不到了)

  • 充电器头坏了怎么修复(充电器头坏了怎么修复手机)

    充电器头坏了怎么修复(充电器头坏了怎么修复手机)

  • 发货地址和实际发货地址不一样(发货地址和实际发货地址不一样客服怎么处理)

    发货地址和实际发货地址不一样(发货地址和实际发货地址不一样客服怎么处理)

  • 硬盘内部传输速率和外部传输速率(硬盘内部传输速率和接口传输速率的区别)

    硬盘内部传输速率和外部传输速率(硬盘内部传输速率和接口传输速率的区别)

  • 为什么键盘有的字母没反应(为什么键盘有的字母打不出来)

    为什么键盘有的字母没反应(为什么键盘有的字母打不出来)

  • 快手买东西退款成功后多久到账(快手买东西退款到支付宝找不到了)

    快手买东西退款成功后多久到账(快手买东西退款到支付宝找不到了)

  • ipadmini5可以用笔吗(ipadmini5可不可以用笔)

    ipadmini5可以用笔吗(ipadmini5可不可以用笔)

  • cpu fan error什么意思(cpu fan,error)

    cpu fan error什么意思(cpu fan,error)

  • 2000mb等于多少gb(2000mb是多大)

    2000mb等于多少gb(2000mb是多大)

  • word 怎么添加脚注(word怎么添加脚注)

    word 怎么添加脚注(word怎么添加脚注)

  • 苹果x密码忘了怎么解锁(苹果x密码忘了怎么恢复出厂设置)

    苹果x密码忘了怎么解锁(苹果x密码忘了怎么恢复出厂设置)

  • 美版lla什么版本(美版ls)

    美版lla什么版本(美版ls)

  • 电脑运行程序怎么打开(电脑运行程序怎么看)

    电脑运行程序怎么打开(电脑运行程序怎么看)

  • 苹果11怎么设置24小时时间(苹果11怎么设置2个面容)

    苹果11怎么设置24小时时间(苹果11怎么设置2个面容)

  • 什么是混凝土冻害(混凝土的冻害)

    什么是混凝土冻害(混凝土的冻害)

  • 抖音商品橱窗收费吗(抖音商品橱窗收款账号必须是个人的吗?)

    抖音商品橱窗收费吗(抖音商品橱窗收款账号必须是个人的吗?)

  • xsmax有指纹解锁吗(xsmax有没有指纹锁)

    xsmax有指纹解锁吗(xsmax有没有指纹锁)

  • 充电线发烫是什么原因(充电线发烫是什么原)

    充电线发烫是什么原因(充电线发烫是什么原)

  • QQ会员如何取消自动续费(qq会员如何取消手机续费)

    QQ会员如何取消自动续费(qq会员如何取消手机续费)

  • 陌陌怎么随机视频聊天(陌陌随机视频聊天怎么没有了)

    陌陌怎么随机视频聊天(陌陌随机视频聊天怎么没有了)

  • 陌陌怎么不能视频(陌陌怎么不能视频聊天了)

    陌陌怎么不能视频(陌陌怎么不能视频聊天了)

  • 怎么关闭hd功能(红米手机怎么关闭hd功能)

    怎么关闭hd功能(红米手机怎么关闭hd功能)

  • 怎么关闭win11安全中心 win11安全中心关闭步骤(怎么关闭win11安装软件提示)

    怎么关闭win11安全中心 win11安全中心关闭步骤(怎么关闭win11安装软件提示)

  • Win10如何设置开始菜单全屏显示 Win10设置开始菜单全屏显示方法(win10如何设置开机声音)

    Win10如何设置开始菜单全屏显示 Win10设置开始菜单全屏显示方法(win10如何设置开机声音)

  • phpcms怎么更换域名(phpcms怎么用)

    phpcms怎么更换域名(phpcms怎么用)

  • 增值税退税账务处理最新规定
  • 供暖服务费增值税怎么算
  • 记账错误怎么办
  • 公司租用私人汽车违法吗
  • 微信支付宝收入计入科目
  • 签章是签字还是盖章 财务
  • 作废的支票银行怎么处理
  • 企业怎样才能做好信用信息修复?
  • 应收退货成本会计科目代码
  • 企业应收票据贴现给银行所获得的现金计入现金流量表
  • 差额事业单位发放科研奖励记账
  • 出售未完成折旧固定资产进项税转出
  • 按最低标准买社保30年退休后每个月领多少钱
  • 超30日未备案
  • 营改增后房地产公司税种及税率
  • 没有收入是否可以入党
  • 预缴税款的税率
  • 营改增来了!会计人应如何自处
  • 洒水车属于免税车辆吗?
  • 企业代收代缴水电费出现差额怎么解释
  • 购买的样品怎么做账
  • 公司的电话费计入什么科目
  • 购买工装的进项能抵扣吗
  • 其他综合收益的含义
  • 劳务公司费用成本怎么算
  • 股权投资收入会计处理
  • 计提个人社保会计分录实操
  • 附加税是按照应交增值税还是已交
  • 高新技术企业如何节税
  • 交通运输业成本构成比例
  • 对股权奖励的计算公式
  • 冰雪节上的冰雕图片
  • 环绕着山的是什么歌
  • 中小微企业社保补贴
  • 销售赔偿款增值税和所得税
  • 微服务springboot结构
  • 食堂员工自己吃饭违法吗
  • sysctl命令配置主机名
  • python中的包有哪些
  • 销售后返现怎么算
  • phpcms插件
  • python中的元组
  • python copyto
  • 工业企业辅助生产设备
  • 错账调整分录
  • 社保滞纳金所得税
  • mysql简单操作
  • 填写备案信息的目的
  • 金税四期上线后对保险
  • 不动产出租要交什么税
  • 事业单位如何计算退休工资
  • 谈一谈企业应如何做才能更好地、有效地激励员工
  • 税务突然查账
  • 库存商品太多
  • 无形资产计提减值准备计算
  • 公司内部核算调研报告
  • 技术服务费收入会计分录怎么写
  • 本月无进项发票需要去增值税发票认证平台吗
  • Winxp系统打不开浏览器
  • centos7修改网络
  • centos7如何扩展根分区空间
  • final cut pro能破解吗
  • macos终端命令
  • 如何查看windows使用痕迹
  • linux svn管理工具
  • msswchx.exe - msswchx进程是什么文件 有何作用
  • win7系统怎么给文件夹设置密码
  • 搜狗浏览器2019版本
  • js数据的基本类型有哪些
  • 使用jquery
  • 基于python的推荐系统
  • python模块导入的几种方法
  • 广度优先搜索输出路径
  • android打开相机
  • js右键菜单
  • js动态生成html页面
  • android fragmentactivity
  • 特岗教师服务期满证书
  • 国际税务网
  • 注销的卡补回来还能恢复以前的套餐吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设