当前位置:首页 > Java技术 > Java多线程父子线程关系 多线程中篇(六)

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

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

父线程说法来源

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

测试

下面的示例中,在主线程中创建了一个线程
线程中,循环三次打印当前线程名称,每次打印sleep 1秒
从结果可以看得出来,主线程结束后,子线程并没有结束,仍旧是继续运行,等到运行结束后,JVM退出
Java多线程父子线程关系 多线程中篇(六) _ JavaClub全栈架构师技术笔记
ps:上图黄色区域是编译器的提示,没什么事儿
Java多线程父子线程关系 多线程中篇(六) _ JavaClub全栈架构师技术笔记

结论

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

作者:noteless
来源链接:https://www.cnblogs.com/noteless/p/10371174.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/68815.html

分享给朋友:

“Java多线程父子线程关系 多线程中篇(六)” 的相关文章

Java 内存模型

Java 内存模型

📦 本文以及示例源码已归档在 javacore Java 内存模型(Java Memory Model),简称 JMM。 JVM 中试图定义一种 JMM 来屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。...

二分法(折半查找)的运用之java实现猜数字游戏

让计算机输入一个数 然后用户进行猜数游戏 一般而言,七次会猜对,如果猜不对,那么就是你的方法不对 在这儿涉及到的一个算法就是二分法 ***二分法查找,***也称为折半法,是一种在有序数组中查找特定元素的搜索算法。二分法查找的思路如下: (1)首先,从数组...

全网最细笔记java与kotlin的一些异同

本文主要介绍java与kotlin的一些异同 后面可能还会继续比较kotlin和dart 期待吗? 打印日志 Java System.out.print("Amit Shekhar"); S...

JAVA UUID 生成唯一标识

Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want 需求     项目在设计表的时候,要处理并发多...

[Java 泥水匠] Java Components 之二:算法篇之项目实践中的位运算符(有你不懂的哦)

[Java 泥水匠] Java Components 之二:算法篇之项目实践中的位运算符(有你不懂的哦)

作者:泥沙砖瓦浆木匠 网站:http://blog.csdn.net/jeffli1993 个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节。 交流QQ群:【编程之美 365234583】http://qm.qq.com/cgi-bin/qm/qr?k=...

java高级

java高级

  Java动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类。代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执行的过程中,开发人员还可以按需调整委托类对象及其功能,这是一套非常灵活有弹性的代理框架。下...

java中equals,hashcode和==的区别

1、== java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型 byte,short,char,int,long,float,double,boolean   他们之间的比较,应用双等号(==),比较的是他们的值。  2.引...

Java集合---面试题

HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中,甚至会要求你实现...

狂神Java基础总结

狂神Java基础总结

Java基础 Java学习的正确打开方式 学习是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。 链接:https://blog.csdn.net/qq_44543508/article/details/102651841...

Java 基础【06】 Super 用法

     路漫漫其修远兮,吾将上下而求索。——屈原《离骚》      昨天写this用法总结的时候,突然产生了一个问题,请教别人之后,有了自己的一点认识。还是把它写下来,为大家更好的认识提供一点思路。 1)有人写了...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。