首页 技术 正文
技术 2022年11月8日
0 收藏 578 点赞 1,888 浏览 868 个字

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

父线程说法来源

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

测试

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

结论

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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,083
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,558
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,407
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,180
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,816
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,899