当前位置: 首页 > news >正文

Java多线程父子线程关系 多线程中篇(六)

有的时候对于Java多线程,我们会听到“父线程、子线程”的概念。
严格的说,Java中不存在实质上的父子关系
没有方法可以获取一个线程的父线程,也没有方法可以获取一个线程所有的子线程
子线程的消亡与父线程的消亡并没有任何关系,不会因为父线程的结束而导致子线程退出(操作系统中如此)。

父线程说法来源

父线程的说法应该是来自于Thread的构造对象时的初始化方法
再次看一下init方法,以下内容截取关键部分
image_5c63e84a_594a
可以看得出来,在init方法中,将创建这个线程的当前线程定义为“父”
        Thread parent = currentThread();
在初始化之后,线程组(如果没设置)、是否为守护线程、优先级、上下文类加载器、父线程ThreadLocal(稍后讲解)都是从当前线程获取的
除了一些初始值的设置来自于所谓“父线程”之外,并没有强关系
所以说,对Java中的线程,父线程的概念,只是一种逻辑称呼,创建线程的当前线程就是新线程的父线程,新线程的一些资源来自于这个父线程
在init方法中,对于所谓父线程的处理逻辑,换一个说法就是借助于当前正在运行的线程,对新创建线程进行一些必要的赋值与初始化

测试

下面的示例中,在主线程中创建了一个线程
线程中,循环三次打印当前线程名称,每次打印sleep 1秒
从结果可以看得出来,主线程结束后,子线程并没有结束,仍旧是继续运行,等到运行结束后,JVM退出
image_5c63e84b_53a4
ps:上图黄色区域是编译器的提示,没什么事儿
image_5c63e84b_4ad2

结论

在Java中的确存在父线程、子线程的说法,代码中对这种说法也存在一定的逻辑体现
但是这种逻辑体现更多的是一种称谓,是一种人类认知层面上的,在程序这种“较真”的世界里面,所谓父线程只是创建新线程的当前线程
父线程的准确称呼应该被叫做当前线程的创建线程
当听到父线程的说法时,应该立即联想到的是创建线程,创建新线程时一些资源的供给者
一个线程与被他创建出来的线程,除了在创建的时候(init)会有一定的依赖交互之外,对JVM来说,他们并没有什么特别的依赖联系,两个独立的线程。
原文地址:Java多线程父子线程关系 多线程中篇(六)

转载于:https://www.cnblogs.com/noteless/p/10371174.html

相关文章:

  • 使用Nginx、Nginx Plus抵御DDOS攻击
  • 前嗅ForeSpider中数据浏览界面介绍
  • NPOI 笔记
  • webpy简单入门---1
  • 印刷名片用什么格式的文件好?
  • spring boot + vue + element-ui全栈开发入门——主页面开发
  • 技术胖1-4季视频复习— (看视频笔记)
  • 如何查找Fiori UI上某个字段对应的后台存储表的名称
  • 日志切割
  • Visual Studio 代码折叠快捷键(摘要)
  • 中小型研发团队架构实践九:任务调度Job
  • 数组
  • golang 发送GET和POST示例
  • 监听器
  • 用Hexo搭建属于自己的Blog
  • 【个人向】《HTTP图解》阅后小结
  • android图片蒙层
  • gf框架之分页模块(五) - 自定义分页
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • Nodejs和JavaWeb协助开发
  • npx命令介绍
  • Python利用正则抓取网页内容保存到本地
  • React 快速上手 - 07 前端路由 react-router
  • 大快搜索数据爬虫技术实例安装教学篇
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • $.proxy和$.extend
  • ()、[]、{}、(())、[[]]命令替换
  • (SpringBoot)第二章:Spring创建和使用
  • (windows2012共享文件夹和防火墙设置
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)http-server应用
  • (转载)Linux网络编程入门
  • **CI中自动类加载的用法总结
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .Net MVC + EF搭建学生管理系统
  • .net web项目 调用webService
  • .net经典笔试题
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • @Autowired多个相同类型bean装配问题
  • @ConditionalOnProperty注解使用说明
  • @EventListener注解使用说明
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色
  • [C++]18:set和map的使用
  • [Django开源学习 1]django-vue-admin
  • [GN] Vue3快速上手1
  • [HTTP]HTTP协议的状态码