00:00
那么我们来看一看我们这个怎么获取当前线程对象。这里彤老师我们就什么叫当前线程对象啊。来我们看有这么一个代码,各位啊。在这个帮助文档当中,我们找一找,有一个叫做Java点浪包的,哎,我们找一下啊,然后下边呢,我们找一找有一个类啊,这个类呢,叫做。呃,叫做thread。一开始。Thread啊,那thread这个类呢,往下走吧,咱们看一看啊,这里呢有一个。有一个这样的方法,大家看。就这。首先我们先来看一看啊,这个方法呀,它呢是静态的,看见没。它的返回值类型叫thread。然后呢,它的方法名叫current thread,表示当前线程,看见没。
01:00
那么这是静态方法,各位我把它拿过来啊,怎么去获取这个当前线程。你看雨桐老师,我获取他干啥呀?有用,现在你不知道它有什么用,对吧?哎,一会儿我告诉你它有什么用啊。这个方法就是获取当前线程的。啊,它是个静态方法。啊,他要写的话怎么写呀,是thread点什么current thread会返回一个什么thread。啊,返回值T就是代表当前线程啊,返回值T就是当前线程。啊,那么这块假如说我们在这里调用了thread.current thread,然后返回一个thread t,那么这个T就是当前线程。明白吧,哎,这个这个这个这个假如说叫嗯。T吧,或者叫current吧,这个就是当前线程,各位啊,这个就是当前线程对象,那什么是当前线程呢?注意它这个代码出现在main方法当中,所以当前线程就是主线程。
02:12
明白吗?哎,这个代码啊,这个代码出现在main方法当中,所以当前线程就是主线程。明白什么意思吧,哎,就是主线程,各位啊,主线程,来我们看看主线程的名字。怎么看呀?Current thread,点什么I get name,就这一段代码出现在哪,获取的就是哪个线程,你出现在main方法当中,那你获取的那你的当前线程不就是主线程吗?对吧?你看主线程的名字是什么?来,我们看看主线程的名字啊。来往上走,主线程的名字就叫man,你看。主线程它的名字就叫焖,你不用改名了啊,哎,它的名字就叫焖。
03:00
它的静态方法,各位啊,thread.current thread来获取我们当前现场。那么往下走,那如果说我在这个位置获取现成的名字的话,我怎么获取啊。线程名字我怎么获取啊?来,我能不能获取当前线程?各位thread current thread等于什么呀?等于thread.current thread还是这行代码一模一样,然后我们把这个current thread放到这个位置上,点get。那我问大家,这个current是谁?这个thread呀,就是什么当前线程对象。当前线程是谁呢?有意思了对吧,如果你是T1线程啊,如果你是T线程。去启动的话。这个run方法执行过程当中啊,这个当前线程就是谁啊,这个T明白吗?如果T2线程在这儿怎么着启动了。
04:09
注意听T2线程启动这个run方法执行的时候,当前线程其实就是T2。这个大家理解吗?理解的话扣一吧。就这行代码,它很神奇啊,出现在哪?获取的就是当前线程对象。啊,他出现在哪,获取的就是当前对象。啊。这行代码它是出现在哪获取的,出现在哪就是获取的当前线程对象。代码不用动,你看thread.current thread拿当前线程,然后这个是thread,点开TH拿当前线程,如果你是T线程。去启动的话,那你这个将来执行执行到这这这段代码的时候,这个当前线程指的就是T。如果你是TR线程启动之后去执行的这个run方法的话,那么我这个current当前线程就是T2。
05:03
总之,我这行代码它永远都可以拿到,当前现成代码是固定的。有点像this,哎,这个陈赓说的太对了啊,有点像this,有点像this啊。有点像,但不是啊,但不是对,这是当前线程啊,当T1线程执行run方法,那么这个当前线程就是T1喽。当T2线程执行方法,那么这个当前线程就是T2了。总之。哪个线程去执行这个run方法,它当前线程就指的是哪个线程。这行代码是可以获取的,到你看这一行代码出现在main方法当中,它获取的当前线程就是主线程了。对吧?哎,那现在我获取这个名字,大家看当前线程它的get name拿到是拿到是什么,你看T线程是不是设置它的线程名字叫T啊。
06:05
对吧,哎,那这个时候他的get name是不是就得的是T呀。那T2呢,线程去设置什么呀,我们的set name对吧?哎,设置TR,那么这个时候我们,哎current thread.get name,他拿的这个名字是不是就是T2呀。是吧,哎,走。我们来看看是不是这样的一个效果啊,来大家看一看,你看。T1T2MEN,这是上面那个名字吧,往下走你看T2T2T2T1对吧,T2。是不是,哎,T1T2T1T2。对吧,这个位置的名字是拿的当前县城的名字。好了,这个例子呢,我最主要是给大家说上这么。算是三个方法吧,各位,一个方法是通过哎线程对象去调用get name来获取线程的名字,还有一个方法是通过线程对象的site name这个方法来干什么呀?来来修改我们线程的名字,还有一个静态的方法是通过thread这个类呢去调用的。
07:13
它呢,Current thread这个方法,它可以获取到当前线程对象,它出现在哪呢?哎,就是获取的哪个线程出现在主线程中,获取当前线程就是主线程出现在我们run方法当中,哎,获取的当前线程那要看谁去执行run方法,T1线程执行run方法就这个当前线程就是T1 T2线程去执行转方法,当前线程就是T2。对吧,哎,大家思考一下,这是不是两个不同的站。两个不同的站吧,各位。可以用super.get super get name。Super。点。
08:03
哦,你说用super.get name super是它的副类,它的副类是thread。是这意思吗?哦,Super,来咱们看看啊,那这个同学说super name super.get name。我们看能不能拿到行吧。哎,能不能拿到啊,来我们执行一下。嗯。嗯,你看。也可以,是不是,那this行不行呢。用this行不行,各位。这个this是当前对象是吗?来,走一个。啊。可以吧,也可以也可以。
09:03
这里呢,主要是为了想让大家掌握这个方法,各位啊,因为这个方法以后开发我们要用。明白吗?所以我接下来我我的写法呢,都是采用这种方式写,各位啊。都是采用这种方式写啊,Thread current thread拿到当前线程。啊,拿到当前线程各位啊,注意注意了啊注意了,我们以后这个用的多以后,你就知道这两种方式它的局限性了啊,它的局限性了。因为你这个代码呀,恰好是什么呀,恰好是出现在什么呀,我们的一个my thread这样一个类,对对里,呃,类里边对不对,哎。那么大家思考一下,如果说我现在在这个位置上。有一个方法叫do some,这个方法do some里边能不能用this get name。能不能能不能用super。对吧,那如果TH行不行呢。
10:02
这三个方法哪个行啊?大家思考一下,这个this get name,这个this指的是这个对象,这个对象它不是线程。对吧,所以你这个用不了super name行不行啊,这也不行。对吧,但是你不行,这可以。所以说你这边用this.get name和点get name是碰巧你当前这个类呢,就是一个建成类。明白什么意思吧?对,你在这,你要想获取当前线程的话,你不得采取这种方式吗?伟斌,理解了吗?伟斌。嗯,好。嗯。这样就不行了,但是这样可以啊。
11:01
这样可以的,嗯,我们也可以测试一下,是不是也可以测试一下啊来,比如这块呢,我给它注释掉。对吧,然后这块呢,我们拿到县城,拿到县城的名字是不是。Name,输出这个name行吧,那这个时候我们一个对象叫thread test05TT等于new一个thread test05new完这个对象之后呢,我们通过对象点to some这个方法。调do some这个方法,那么do some方法是不是在主线程里边啊,大家思考一下是不是在主线程里边啊,因为你是new对象,然后main方法去调到这个吗?T t.do some是不是在主线程当前线程的名字是不是就闷啊?对吧,当前现存的名字是不是闷啊。来,走一个。嗯。往上走,好,大家看见了吧。是不是,所以这种方式还是更通用一些,更通用一些啊,获取当前线程的名字,你就记住用thread.current thread是当前线程,当前线程调get name这个方法来获取当前线程的名字啊。
12:12
行了,这块的话,这是咱们同学们提出的一个疑问,我在这给大家再说一说吧,啊,这种方式我们以后是不会用的啊,一般还是用这种方式通用一些啊,获取当前线程thread current thread就可以了。
我来说两句