00:00
各位同学大家好,接下来为大家介绍用户线程和守护线程这个知识点,哎,那么大家请看,目前我们第二章呢,已经要接近尾声了,这儿我多说一句,这一章呢是承上启下,只有先把这些什么是并发并行进程线程、管程、守护线程、用户线程这些基础概念整明白了,后续带着大家进行后面章节的深度学习的时候,那么你会发现有这些概念打底,你才能走得稳,正所谓基础不牢,地动山摇。那么我们前面也给大家讲解过,我们本次的这个源码分析,不但有Java的源码分析,还会有C的源码分析,甚至到后面有汇编级别的源码分析,所以说一些基本功是希望大家在前面就打好基础的,后面的话呢,我们一看到某些东西,比方说他写了个DEMO,那么我就你就会明白啊,这是个首都线程,哎,我们就不再过多的讲解了,好。看一下。对于我们而言,Java的线程呢,可以分为两种,一种叫用户线程,一种叫守护线程,那么说简单一点的话呢,就说一般啊,我们不做特别说明,默认都是什么?用户线程,也就是我们用户自己流传的一个线程,但是整个系统为了良好的运作,它在系统层面也会给你提供一种东西,叫守护线程,好比一个人,你站立着,站在阳光下,身后都会有一个影子,俗称如影随形。
01:29
你的本身,你的真身就是用户线程,隐藏就是守护线程。那么假设这个。本身这。这个真身它倒下了,那么自然而然影子也就消失了,好,我们先来看用户线程user thread。那么也就是我们。系统的工作线程,它会完成这个程序需要完成的业务操作,最经典的啊,就是我们在这,同学们请看我们这假设写了个用户线程或者守护线程,那么我们在这儿,这个main方法就是我们一切程序的入口,它就是最经典的一个用户线程,哎,那是我们人编的,我们自己启动的,要运行我们的程序,但是自然而然,那么同学们,你们来看啊,肉眼可及,那么我们知道这一定会有个内线程,也就是我们常说的主线程。
02:16
那么除了这个main线程以外,还有没有其他线程呢?答案是有的,比如说所有Java都要跑到Java虚拟机上面,后台默默的有一个守护线程,也就是我们的什么GC垃圾回收线程,哎,所以说用户线程和守护线程他们时不时是交替存在的,那么好,对于我们的守护线程又是什么呢?是一种特殊的线程,是为什么其他线程服务的,他在后台默默的完成一些系统性的工作,比如说这个用户线程不方便做的东西,那么守护线程就可以替你默默的完成,那么比如垃圾回收就是最经典的案例,那假设在公司里面,你们部门领导去出差了,他就是用户县城瞒着主要业务,主要工作,那么这个部门秘书可能就会。
03:05
默默的在后面帮他处理一些杂物,比如说帮他贴发票进行出差的报销,那么这个部门秘书的角色就是守护现场,那么自然而然,如果有一天这个领导他已经离开了,或者不再赶了,那么对应的。行政秘书,部门秘书也就不对他提供服务了,所以说守护线程是作为一个什么线程服务,线程没有服务对象,他有没有。存在的必要,也就不用继续运行了。如果用户线程结束了,那么意味着程序需要完成,业务操作也已经结束,系统就可以退出假设。当前系统只剩下守护线程的时候,那么Java虚拟机就会自动退出,因为没有可以服务的对象了。好,那么这个呢,就是我们对用户线程守护线程的概念介绍,那么接下来来看一下线程的DEMO这个属性来。我们来看一下源码,判断一个线程是用户线程还是守护线程,有一个方法叫STEM,它是来判断这个线程,就当前这个线程,它是不是后台的守护线程。
04:11
返回值如果是处,这个线程就是后台的守护线程,否则的话就是用户线程,那么这个意思呢?返回布尔值是判断这个线程是否是守护线程,那么另外一个方法叫set DEMO,那么传递处跟false来设置当前这个线程是用户线程还是守护线程,哎,一个是判断,一个是设置,待会儿我们在代码里面都会给大家讲解,我们先上第一波理论实操,然后最后我们在小总结,那么切记,如果是处就是守护线程,如果是副词就是用户线程。
我来说两句