00:00
各位同学大家好,刚才呢给大家介绍了什么叫管成,那下面呢,我们再来介绍另外一个概念,这个概念中是比较两个内容,一个叫做用户线程,一个叫做守护线程,咱们来说一下用户线程和守护线程分别是什么,以及他们各自有什么样的特点和区别。那下面给各位来说一下,关于这个用户线程,还有这个叫守护线程,我在这里边给各位同学来写一下,我写到这个位置。首先我们看这个叫用户线程,咱们说一下什么叫用户线程,其实各位知道啊,咱们平时所用到的线程基本上都是用户线程,比如我现在自己扭上一个threat,那这个线程就是一个用户线程,比如咱们平时我们叫自定义这么一个线程,基本上都是咱们这个用户的这个线程。
01:03
然后这里边还有一个线程叫守护线程,那什么叫守护线程的,各位可以理解,看这个词,它是用在后台中一种特殊的一个线程,比如说各位知道有一个操作叫做垃圾回收,在后台是不是给他默默去执行,所以这种线程就叫做守护线程,比如说我们这个垃圾回收。这些就是两个线程的一个基本定义,第一个用户线程,咱们平时用到的线程基本上都是用户线程,守护线程是一种特殊线程,运行在后台,比如说我们看到那个垃圾回收就是一个守护线程,那下面呢,我们写段代码,把两个线程咱们做一个最基本的演示,咱们看一下里边的特点。那我现在在这个类里边呢,我来写上这么一个操作,比如现在啊,我直接new上一个TH,是不是建一个线程,然后在里边我们这个位置,比如说我直接写个操作。
02:08
在这里边呢,咱们做个输出。就直接把这个当前的线程名称输出一下,这是我们当前线程名称,然后在后面呢,咱们加上这么一段话,或者这么一段代码,我们来一个threat.current threat点上意思这个方法,这个方法什么意思?就表示你这个线程是用户线程还是守护线程,如果说你是值是处,那就是守护线程,如果你是false,那它就是一个用户线程。然后写完之后,下面比如说啊,我写上这么一段代码。大家注意的写法啊,我来一个while,后面加上一个true。什么意思,是不是会一直执行下去啊,这么写是不是就是一个死循环,所以这让他一直会执行下去,然后在这里边呢,加上我这个现成的名称,比如说我起个名字就叫A。
03:08
最终它会返回这么一个值,这值就叫A,然后这写完之后,咱们调用A中的大的方法把线程创建。包括运行,最终我再次输出,咱们也是。写上一个叫threat current threat,点开name,把那个主线程的名字做个打印,比如最终我们加上一个提示啊,说这个主线程已经over结束了,现在这是我们写的这么一段基础代码,然后这个代码执行一下,咱们看它会有什么样的效果,通过它咱做个分析。首先第一个大家看啊,主线程是main线程,是不是已经over结束了,然后我的A线程的值是不是叫false false咱说过表示它是什么,是不是一个用户线程,所以大家发现啊,我当前程序没有停止吧,是不是还是红色,为什么?
04:06
你是不是加一个循环呀,也就是表示啊,你的用户线程如果说还在运行,主线程结束了,那这个时候GVM是不是它依然是存活状态,因为你还有用户线程在运行,所以这是它的一个特点。那这里边啊,我把这段话在我这里边给大家来写一下,就刚才我们看到这个现象,我写这个位置啊,就是现在如果说你的主线程已经。结束了,这个时候你的用户线程它还在运行,那这种情况下咱的GM是不是它还是一个存活的状态,这是我们刚才看到的第一个现象,然后下面咱再说一下,这个就是我们这个守护线程,比如现在啊,我这么来做。我在这里边呢,就把咱这线程设置成叫守护线程。
05:03
那怎么设置呢?在A里边有个方法意思,这个方法咱把它的值。变成这个数。成处之后,它应该会变成一个守护线程啊,这里不是意思啊,应该是一个set方法,Set这个方法里边这是处把它变成了守护线程,那这个时候咱们来执行一下,看一下它有什么特点啊,现在我们执行啊,这个我先停止,然后咱们执行。大家看效果。首先你看啊,我这里边主线程是不是结束了,然后我的JM是不是也结束了,为什么?因为当前你主线程结束了,它里边已经没有了用户线程在运行,因为我这已经变成了守护线程,就是都是守护线程了,那这个时候GVM就会结束。这是我们刚才看到的第二个特点,给大家写一下啊,如果说现在这里边没有这个用户现成了。
06:06
它里边都是我们这个守护线程。那这种情况下咱的GYM就会结束了,这是关于我们说的用户线程和守护线程特点,咱们把它的概念做了一个说明,包括通过一个具体代码把这个效果我们做了演示,所以各位知道这两个特点,用户线程包括守护线程。而这个过程中特别强调一点啊,咱们在设置线程是用户包括守护的时候,需要在这个大的方法之前做过设置,不能写到之后就之后就不对了,应该在你进行大之前设置你是一个守护线程,所以现在关于GM中进程和线程中的基本概念给各位就最终说完了。
我来说两句