00:00
那这个完了以后,那接下来呢,咱们再回过来,先不着急呢,去说第二种创建方式,哎咱们呢,刚才在讲这个第一种方式的时候呢,涉及到过这个thread当中的一些方法的使用,哎,比如我们这里边调过这个叫current thread,哎调过这个叫get name等等,那除了这些这两个方法之外呢,它还有其他的一些方法,咱们在这个,诶在我们这个PPT当中呢,是可以看到的啊往下走这呢啊,这不是啊。这呢是涉及到我们thread这个类的一些方法,所以咱们呢,先把这个thread中,Thread类当中的一些常用的方法呢,诶给大家去说一下,那实际上咱们已经接触过thad类的几个方法了,比如说呢,咱们最开始看到的就是这个run和start,哎,这是两个方法,然后呢,咱们刚才那会也调了一下叫get name,哎,这个current threat也调过啊,有get name,它还对应有一个叫set name,哎包括下边呢,还有几个方法,这个我们还没有见过的,诶我们把这几个方法呢给大家讲一下啊,所以这块呢,我们去,呃在Java下面新建一个文件。
01:11
叫thread其中的方法的一些测试,哎,这个呢,咱们是来测试thread这个类中的常用方法,好常用方法,诶刚才呢,咱们其实也已经用过几个了,第一个呢,叫做大的方法。嗯,磁带的方法我们进行一个描述,嗯,那就刚才提到了它的两个作用,第一个叫启动当前线程,哎分号哎调用哎当前线程的run方法。哎,这是它的两个作用啊,那么第二个呢,咱们就紧接着提到这个run方法。
02:03
哎,Run方法我们需要去重写,通常需要重写啊,Thread类中的此方法。哎,这个还挺烦人的啊,瓷砖的类中的这个词,哎方法,那么我们重写此方法,那这个方法体怎么写呢?就是将啊这个创建的线程执行的操作。哎,然后呢,哎,声明在S方法中。嗯,就是你这个线程到底要干什么啊,在这个run里边去写,嗯成这是咱们说的这两个方法了,然后呢,咱们刚才那会儿不是也说到,呃,另外两个啊,一个呢叫current,哎,这个叫thread啊,这个current thread,嗯,你会发现它其实是一个,是不是一个静态方法呀?哎,咱们这个thad直接通过这个类呢调的这个叫current thread啊,你看咱们上午不是做过这个测试,哎,我测试的时候咱们把光标放在这儿,我那时候设置的是一秒钟。
03:14
A,一秒钟以后呢,它会显出来啊,这个current thread,这是一个静态方法,这个方法的作用呢,就是返回我们当前就是执行这一行代码的时候呢,你的这个线程,哎,所以它的返回值类型呢,是一个thread啊。在这我们写一下,这呢是一个静态方法返回当前代码啊,这个执行的这个线程啊,或叫执行当前代码的一个线程,哎,这是它的这个作用啊,然后呢,接下来我们这有一个刚才看到叫get name。哎,这个很简单了,那就是获取当前线程的哎名字呗,嗯,那能获取,那就意味着我们是不是还可以去设置一下呢?诶也有这个方法了啊,这叫s name,实际上呢,说白了就是我们这个类里边它有一个诶内目属性,对,就是来记录你这个线程的名字的啊,然后这是相当于这个内幕属性的一个盖赛的方法啊,这呢叫设置,哎当前开线程的这个名字啊,那么咱们在这块呢,就举举例子了,嗯,比如说呢,我在上边这块,哎,咱们再写一个啊,这个我叫class,嗯,我这还叫my thread是不是就不行了。
04:35
咱们在这个当前这个同一个,呃包下咱们已经有这个ma这个类了,所以这就不能再叫它了,嗯这个呢,我叫嗯嗯叫什么呀。我写一个叫hello thread吧,诶换一个名,主要呢,咱们这块没有具体的含义了啊,就是来测试一下这个常用的方法吧,嗯,我写了这样的一个类,然后接下来我们需要去重写这个run方法,哎,咱们呢,还是让他写一个遍历操作啊for哎到100如果哎。
05:14
全二等等于零啊i.out点输出好,在这呢,我们给它也补上一个,诶thad点,哎,Current thad.get name哎这样子啊,行这呢是咱们这个,呃,分线程创建这个线程里边这个逻辑啊,然后接下来在咱们这个main方法当中,呃,这个呢,咱们去造一个当前这个此类的对象。哎,这个叫H1吧,诶你一个。哎,然后呢,h1.2我去做一个诶四大的调用,哎这样子的啊,然后呢,我们执行此时呢,你会看到咱们默认呢,给我们提供的这个签证名呢,叫thread杠零啊TH杠零这个呢,你要说究其原因为什么叫杠零,咱们这时候呢,调的是当前这个子类的一个空三构造器,那么空三构造器是不是就会掉负类的修复空啊,那咱们去这个thad里边咱们找一下啊,咱们ctrl o一下找这个,诶就看着了它就是呗。
06:22
这就是在这里边啊,你看它能够看到我们这个ind的这个方法的一个参数啊,你一看这实际上就知道了,哎,这是这个name,相当于先证明这不就在的杠几吗?哎,然后这块有个方法,这里边就给我们提供这个数,这个数的话呢,它一开始的值是零。哎,所以在杠零,然后呢,你再掉的时候呢,这不加加了就杠一呗。哎,就是这样一个方式啊,成那回过来,比如现在呢,我们不希望它这个就S杠零了,想起个名,哎,那你注意记得得在你这个四大之前啊,要不人家都已经开始执行了,你再起名就晚了。啊,在这个之前,哎,我写个H一点,哎,Set内,哎这个里边写个名,比如我们就写成叫线程一。
07:09
哎,这是它的名字,那设置完以后,接着我们做一个start。哎,那这时候就改了名了,哎,这叫线程一啊线程一,然后呢,咱们在呃下边,咱们比如说还有这个主线程啊CTRLC主线程呢,我们就写这,哎在主线程,其实主线程呢,呃一进来没方法,这都算是这个主线程做的事儿。啊,这个分线程呢,也是咱们主线程帮你造的对象帮你呢设置的名字,然后呢,去调了start以后啊,你启动起来了,你才去有了分线程啊这块呢,其实都是主线程做的事儿啊,那么我们也可以给咱们这个主线程。哎,给主线程对,给他呢去做一个命名。啊,那怎么写啊?
08:01
主线程他又不像这个h he,它就有个名直接掉这个赛内码,这这怎么处理,诶对咱们刚才那会不是说他了吗。这样咱们获取到的不就是这个当前的这个主线程是吧,然后我给他呢,去,诶set一下name呗,诶这个咱们就起名叫主线程。哎,这样子,哎,然后呢,你在get内的时候呢,这不就是get的它吗?哎啊执行,哎,这是线程一上面的主线程。哎,没有问题啊好,那这样的话呢,咱们就体现了一下,这个叫set name,这呢相当于是我们这个内幕属性的一个盖赛的方法。啊,其实还有一种方式给这个属性命名,咱们前面讲属性的时候呢,除了你后期有盖塞的方法去改它,是不是还有涉及到一种是在构造器里边也可以去起名啊对,那这时候你得看一下人家re有没有这样类似的构造器,诶我们在RI的这个类当中啊,你ctrl o一下。
09:06
你会看到它这有一个这个是吧,哎,而这个呢,其实就是给我们这个线程命名的,哎,它就是啊,那其实我们还可以这样来处理,咱们在这个子类当中呢,我们去提供一个构造器,咱就叫做hello,哎,Thread这个位置我就写一个string类型的。呃,大家你看啊,我写小写的这个string,呃,S是小写的也能给我提示出来,咱们上午不是做过那个设置嘛,是吧,对,就是让他忽略这个大小写也能给我们做提示啊,哎,写个他写个内幕。哎,在这呢,我就直接修复一下name呗。哎,因为我们read类里边正好有这个构造器,诶,我直接就这样一下。诶这样写完以后,哎这块的话呢,因为咱们只提供了一个呃空餐的了啊哎只提供一个代餐的了,空餐就没有了,所以在这个位置呢,我们得写一下,哎你看他呢,还给我提出来这个行参,你这个名叫什么叫name啊嗯,这咱们换一种方式吧,这个我就写写一个叫哎thread。
10:13
说的一有点丑是吧的冒号一杠一跟人原原来的一样了,杠一,呃,冒号一吧,这样啊,那这样的话呢,你得把这个除入掉了,哎,这咱们相当于通过构造器的方式给这个先生命名的,那你执行一下。哎,可以是吧,哎是OK的啊行这呢就相当于是这个两种给线程起名的方式,大家呢,用哪个都可以成,这呢是说的这几个方法,然后还有还有呢,比如说来一个六六呢叫什么呢?呃,提到一个叫啊I的。诶叫业务的这个方法,这个方法是干什么用的,这咱们就来举例说明,嗯举例说明咱们在这里边吧。
11:08
在这里边来说啊,这呢是咱们这个分线程,分线程呢,我这块呢,是曲目二等于零,它就输出了,嗯,那我们看这个执行的结果的话,看这些结果,这个分线程呢,你会发现呢,很多时候它是连在一起的啊,就相当于呢,这个执行完56以后,接下来呢,这个CPU还接着执行它啊,它就出来个58啊,出来个六十六十二啊这个这个这个这个这个啊意思出来了,就相当于在这一段时间之内呢,这个主线程其实是没有做任何事情的,都分给咱们这个分线程来做了,那现在的话呢,我们在哎这个位置,我写一个逻辑啊,说如果这个I呢,取模20。当等于零啊,如果是这样的话呢,我就直接调一下业务的。
12:00
我直接调到业务的,这这是一个方法了,方法前面相当于省略了这个对象了啊。对象是谁啊?对象当然是Z次了是吧?哎,这不相当于这个方法里边又掉方法,这前面省略的不都是Z吗?非静态的方法啊,都是Z了,嗯,那这个Z代表的是谁呀?哎,这个咱们也讲面向对象了,这个时候都得咱们拿面向对象了,现在去讲这些新的知识了,这个这次咱们从面向对象的角度,是不是就当前这个类的对象了,当前这个类的对象,呃,就是我们这里边就是在这个问题中,就是H1呗,H1其实也就相当于咱们当前的这个线程吧。对吧。咱咱们he不是你造的这个线程的对的啊,所以说这块呢,你就是不写,相当于省略的是Z次点,哎,你就知道啊,是我们当前这个类的对象,哎,我要是把这个Z我去掉,我能改成它吗。
13:03
能赶上他吗?是不是一回事啊,哎,一回事啊,这得想的清楚一回事啊,这个这次的话呢,当前列的对象,那不就是在你这个问题中,不就是你当前这个县城吗?哎,一个意思啊,哎这块呢,我们就完全都省略掉也是可以的,那这个呢,想体现的事呢,就是说呃,我们这块呢,呃,只要是一个偶数就输出了,输出以后呢,紧接着这块呢,判断你是不是被20整除,比如说像这个零啊,20啊,40啊,60啊,这都算,当你满足这个数的时候呢,我们做一个也有的。好,我们跑一下啊,跑一下这个效果呢,它其实不一定能出得来,目前呢还真没出来。哎,我想找一个满足这个效果的,我给你讲一讲啊,诶这个这个就可以了,你看啊,在这个60这。
14:00
咱们这呢,相当于是60,是不是相当于是个偶数了,输出了输出以后呢,你会发现这个60的下一个数呢,嗯,不是62。呃,是这个主线能给抢了,嗯,他这个业务的意思是什么呢?就是我们执行到这恰好你这个数是60 60呢,满足这个if它就进去了,意意味着就是当你是60这个数的时候呢,我调用了业务的,这个业务的意思呢,就是释放当前CPU的这个执行权。哎,就是明明现在CPU相当于是哎给你这个线程一在执行着呢,但是你这时候呢,明确调了一下业务的,就说现在呢,我想释放这个执行权,我我不想执行了,所以他一旦释放是不是就有可能被另外一个线程所拿到啊,所以我会看到后边这个呢,A就变成了另外一个线程了。当然了,你也可能会看到这样的情况。哎,这这个这个这这不算啊,应该人家已经到到头了是吧,到前面了啊,40也满足了,80没有啊,80不是说了,你这都到头了吗?20找20,诶20也满足是吧,他这还挺给力的啊,都满足了,再来一次,你看我第一次的时候,我说说这个不好使,我又跑了一遍啊。
15:23
这个更夸张是吧,再来。释放的能力。这也不行是吧,诶这个也可以考虑看那个零吧。哎,这不也可以吗?就我们这个的这个分线程,我们执行零的时候呢,是不是零在这块也满足,嗯,你看这个零的时候呢,发现后边呢,并没有说这个主线程去执行,而且还而还是我们这个分线程,那其实就相当于是我释放了,但是呢,诶对又抢到了。
16:00
或者其实我们这个是从这个线程的角度说,要抢到了,是实际上是你这个CPU在主动的切换这个线程啊,就是在这的时候呢,是你这个分线程说我释放执行权,但是呢,下一刻这个CPU又分到你这儿了啊,他没有分给另外一个线程。啊,但至少呢,我们知道它的一个作用啊,在这写一下,哎,一旦呢,我们线程执行此方法的时候呢,表示叫释放,哎,当前哎这个CPU的这个执行。哎,这个还执行权,呃,那当然呢,有可能在下一刻的时候呢,呃,又分配到当前这个现上了,这是有可能的啊,呃,大家你别看到这个结果呢,感觉很惊讶就行,好,这是我们说的这个叫业务的操作,那下一个七七呢,我们说另外一个方法,这个叫John,哎,这个叫John啊John咱们就不在这块测了,我把这个呢给它注释了吧,我在下边。
17:06
嗯,下边在哪呢?我们在这个主线程当中啊,这个主线程当中,咱们这是这个主线程在执行这个操作,哎,在这个位置,这个位置呢,我写一个一说,如果这个I它呢取模啊,别取模了,我直接就让它等等一个数吧,等等于20。一旦呢,我们这个主线程这个I呢,执行到20的时候呢,我在这个位置,在这个位置咱们是不是仍然得是你要写这个join,得是让我们一个线程去调照啊。因为咱们是不是说这个join方法是thread里边的一个方法呀,我现在这样写,你看报错了。因为你这个照案相当于是不是在may方法里成了你这个类的一个方法了,我这个类又没有这个方法,所以报错,哎,所以这个呢,很好理解啊,咱们现在的这个照我让谁去调呢?我让这个H1去调。H1,这是咱们这个的一个词类了,自然而然它是不是就有这个方法了。
18:05
哎,那这个照唤方法呢,本身还抛异常啊,你看抛异常啊,抛异常这块呢,我al enter一下,哎,我给它呢,使用这个track catch进行一个处理啊点一下。能看懂吗?嗯,好,那相当于呢,咱们在这个主线程当中,哎,这个for循环,哎一旦呢,我们这个I20的时候呢,我调了一下h1.john乘,看一下效果。好,这个我执行一次就可以了,好找。你看上面呢,它们之间还会有一些交互,然后当我们这个主线程执行到20的时候。相当于你把这个20呢,就执行完了,执行完以后,它这个接下来呢,就会考虑执行到这儿,执行到这儿的时候呢,你会发现我们调用一下这个叫张以后。主线程这块执行到20以后,后边呢,它会调这个join方法,接下来你会看到这个RED1,就是这个分线程啊,走走走一直执行完了,然后接下来我们这个主线程才开始去执行的。
19:11
啊,你可能说,哎,这是不是一个巧合,好,那我们就再来一遍。哎,再来一遍,再来一遍,我们就看到了啊啊,你说这个为什么不从零开始,我这写的是等等于20啊,不是曲目20。哎,当我们这个主线程到20的时候呢,这个分线程就参与进来,参与进来以后,在中间这个THREAD1THAD1没有执行完的时候呢,这个主线程呢,是绝对不可能执行的。当咱们这个THREAD1执行完以后,这个主线程才开始继续执行。哎,这就是咱们这个照方法的一个特点啊,就是这个意思啊,比如说咱们这是一个线程,这是一个线程往下执行的呢,然后呢,在这个位置呢,哎,我们呢,调用了另外一个线程的照按方法。
20:04
啊,调用另外一个线程的照样方法,那这个时候如果咱们以这个单核CPU为例啊,这个CPU现在呢,是不是就开始接着去执行我们这个线程一了,直到咱们这个照人进来的这个线程执行完以后啊,这时候它完全已经执行完这个转方法了,啊这个时候呢,我们这个,呃,你上面这个红色的这个线程是不是才继续的执行。哎,就是这种。啊,就是这种了啊呃,那这个有的时候呢,我们会出现这样的情况,就是这个线程呢,它这个执行执行到这块呢,它需要一些数据。这些数据的话呢,他他不是说自己提供的,他需要另外一个线程帮他提供,所以在这个时候呢,他就开始去调另外一个线程的召唤方法,然后那个线程呢,就过来去执行啊,有可能时间会比较晚啊,这个他就得执行一会儿,那执行的这个过程当中,这个线程都不要动,当人家呢,把这个数据完全提供给你以后,诶这这时候呢,你再接着往下走,诶就是这个意思。
21:01
啊,这个举一个生活中的例子,就比如说大家呢,呃,以前上学的时候,在大学呢,你比如去这个食堂,那去打饭是吧,然后这块呢,就排着队,然后排队呢,就相当于你是一个县城,这时候呢,打饭的那个那个阿姨啊啥的,就相当于是一个CP了,哎,这块给你这个这个盛饭是吧,那这时候突然你发现这个习大大去你们学校了啊,他也是个县生,他也要中午吃饭,你一看,哎呦不一样是吧,然后这就说你先来,你相当于调了这个习大大这个召唤方法,然后他就先来,哎等他这个打完饭以后呢,这时候你再打他,如果在这块呢,呃,看看看都你们吃什么呢,然后跟人聊会天是吧,那你这时候你也得等着啊,就是只有等人家这个线程执行完以后,哎,这时候你再来,哎,这就是这个join的意思啊。好,那咱们来描述一下,哎,这个join啊嗯,咱们这样来说说这个在线程A中,哎,调用线程B的哎这样的方法,哎在线程A中调用线程B的这的方法,那么此时呢,哎,我们说当你一旦调用完以后,咱们的这个线程A它其实就进入阻塞状态。
22:26
哎,进入哎阻塞状态,就是这时候呢,你这个线程A它就阻塞了,这时候CPU想让它执行,它也执行不了啊,就进入主色的状态,然后呢,这个就是哎这个直到。哎,直到咱们这个线程B啊,完全执行完以后。哎,执行完以后,然后这个线程A啊,才结束这个阻塞状态。
23:02
哎,结束这个阻塞状态。哎,接入足的状态以后,那接下来呢,你就得看CPU什么时候去给你分配资源了,那分配到这个资源以后呢,你就接着往后执行啊就可以了。好,这是咱们说的这个叫哎照案的这个方法啊,嗯,接下来啊,这再来这个第八个方法,嗯,第八个方法呢,咱们在这个PPT里边呢,看到这有一个叫做呃,Stop里先说这个stop方法,这个stop这个方法呢,就是强制的让咱们这个当天线程呢就结束了。啊,就是当一个线程,比如说咱们是便利100以内的偶数啊,我们到40的时候呢,我现在就强制让当前线程stop,这个线程相当于直接就挂了。啊,就是不是阻塞了,直接就相当于是结束了,但是这个方法呢,在咱们这个API里边呢,诶已经被诶过时了,就是不想让它继续用了,你看一下我们这里边找这个叫stop这块,哎这呢叫deprecated,你看一下这个中文的,你知道这个单词呢,叫做过时的意思,就是杨爱丽呢,就是不建议我们后边呢,通过这种方式去结束一个线程了,啊所以这个方法呢,咱们就呃只是说一下,我就不来这演示了,哎在这写一下啊叫做stop。
24:18
哎,这个方法呢,我们说已过时,哎这个说一下它的意思啊,就是当执行此方法时,哎强制哎结束,哎当前线程就是这个时候呢,这个线程就进入你这个生命周期的末尾了,直接就消亡了,就。嗯,这是它,然后呢,我们再来说一个方法,这个呢叫诶sleep,这里边有一个浪型的一个参数啊,叫mill,诶,Time sleep啊正如他这个名字起的一样,睡眠就是让咱们当前这个县城呢可以,哎,休息一会儿。哎,休息一会儿来举个例子,比如说我们这个I呢,曲目二等等于零,我们一进来呢,就让他马上的去输出了,那在这个里边,在这里边可以啊,咱们在这呢,我去加上一个叫,诶,注意这是咱们现成的这个呃方法啊,所以你得通过thread.current thread。
25:17
诶,或者我直接写th sleep可以吧,是不是也可以啊,因为本身呢,你这不就继承1THAD了吗?所以你不用非得写thad current啊,直接掉这个sleep就可以啊,直接掉它就行,然后掉这个sleep呢,我让他去睡多长时间,这个注意单位呢是毫秒,所以如果让他是睡一呃一秒你就写1000。写1000就可以了,然后本身这个sleep方法呢,哎,在这个位置你也能看到啊,点开它会抛一个异常,它抛异常,所以这块呢就爆红了,那我们得去处理了处理,嗯,我们alt enter一下,你看此时呢,这个你看就广果提示说用这个try catch哈,没有提示说还有一个Rose。
26:07
诶,那你说我这时候呢,这个我如果不想在这开想肉兄在其实就不行了,为啥呀,哎,这个时候呢,对,就考察大家面向对象里边学的这个知识了啊,我要是想Rose相当于你是不是得在这个run这块去,诶是一个什么异常,或者我也可以写一个范围比较大的啊,比如说exception,但这时候你会发现,诶在这就报错了啊,就是咱们这个run方法你是继承的人,呃,重写的人家爱的类里的。而我们这个thread类当中的,诶对我们thread类当中这个run呢,你会发现它没有抛异常,他要没有Rose过我们这儿是不是就不可以去Rose死啊,诶这是咱们前面讲的这个重写的时候一条规则啊,这个子类重写的方法,抛的异常不能比父类这个更大。
27:06
弗雷都没有抛,那你这块也绝对不能抛。所以说我们这个sleep呢,大家只能够去,哎,Check开啊,这都是一些知识点啊,那么我们这时候呢,去sleep一下,它的意思呢,就是呃,一旦我们这个线程执行到这儿的时候呢,它就也阻塞了。阻塞多长时间呢?哎,阻塞疫秒,当疫秒以后啊,疫苗马上一下子结束了,结束以后呢,也不是说他马上就执行,后边是不是还得等人家CPU分配给你资源啊,诶分配给你资源了,你就接着往后走,在这个一秒钟之内,CPU即使想给你分配资源呢,也没戏,因为呢,你这时候呢阻塞了。哎,这个意思好,那咱们在这个分线程当中加了一个sleep,加了一个sleep,咱们这时候看一下,那大家看这时候呢,加上我们这个John体体会呢就更明显了,咱们John呢,呃,这个它这个主线上呢,也没加这个sleep,所以呢,一下子就涨到20了,但是呢,咱们在这个主线程当中,这我又加了一个join嘛,哎,就让我们这个分线程开始执行,这时候主线程呢也组着呢,那这时候呢,只能等我们这个分线程一秒一下。
28:23
啊一秒以下,然后呢,这个主线程就等着啊,当我们这呢,执行到这个所,呃98的时候是吧,哎,这时候你再去,哎,开始你这个主线程。这咱们就别等了吧,是吧,太慢了啊,哎,这个停一下就行,诶这呢就是咱们说的这个sleep。哎,Sleep就这个sleep的话呢,嗯,既然给我们提供这个方法了,那就是大家在需要的时候呢,你可以用啊,什么时候需要呢?比如说咱们有的时候写一个像桌面级的一个应用,说这个比如倒计时啊,比如过年的时候呢,这个呃,19啊八七是吧?哎到零的时候呢,就开始啊过年了是吧?哎就是这个数的时候呢,每一秒出现一个,哎这个时候呢,你是不是就可以通过这个sleep方法,让它每秒钟跳一下是吧?哎,就可以这样来做,哎就这样一个例子啊,嗯,我这个课件里边呢。
29:23
小你看看这个啊,这里边写了一个这个。当然这个呢,大家就乐呵一下就得了,说在这呢调一个structure sleep说项目经理说这时候呢,慢一点是吧,好让客户给钱优化,然后提升这个速度是吧,诶这个呢,我怀疑是假的,因为他这个sleep,他这个S都大写的是吧,诶这错了,但是说诶thad怎么直接掉了呢,这个sleep方法呢,还是一个静态方法,哎,我这放一秒。哎,这不就出来了,它是个静态的啊,可以直接呢通过W类去调的啊嗯,成这个呢,就就诶知道这意思就行了啊就sleep的话呢,你就让咱们这个当前线程强制的就让他注册了,呃这时候CPU呢,想执行它也没戏啊行这呢是咱们说的这九个方法,这里边sleep就是哎让哎当前线程这个呢,我这就写一个这样啊睡眠。
30:25
哎,其实就相当于是阻塞睡眠啊,指定的叫minitime啊,好描述。嗯,那之后的话呢,诶,你就等着这个CPU呢,去给你分配资源,分配到的话呢,你就可以执行,那么在指定的这个时间之内,这个线程呢,是阻塞状态啊。哎,这个midtime毫秒时间内。哎,当前当前这个线程是阻塞状态。
31:05
好,这是我们说的这个问题,然后呢,最后我们再讲一个这样的方法,这个是一个十,有一个呢叫is alive,哎,判断一下当前县城是否还存活。啊,是否这个存活就是我们这个线程,如果你这个乱方法呢,都执行完以后,哎,他呢,就相当于就终止了,就就死亡了啊可以这样理解,那么在它执行完之前呢,它都还活着啊,比如说我们在这个for的这个位置,在这个位置我们要是判断一下,判断一下谁呢?咱们这个叫H1啊,是不是叫is alive啊,这个H1是不是一则level,咱们在这个位置的时候呢,H1就会进来执行,它执行完以后,我们这个主线程才会接着执行后边的代码,哎执行完后边代码的时候呢,其实这时候你H一早都执行完了,所以在我们主线程的这个最后判断H1是不是还存活,相当于其实就死了是吧,咱们上面这个呢,整的有点太慢了啊,你可以呢,改成十毫秒型啊,这样就快一点。
32:19
哎,你看哎这不就都执行完了,后边呢,咱们判断的时候呢,这个分线呢,就已经结束了,哎,所以它就是个false啊成这呢是咱们说的这样的一些方法,除了这些方法之外的话呢,还有其他的一些方法啊,还有其他的一些方法,这个呢,呃,等一下咱们再说一下这个叫优先级的问题啊呃,这个这个说完以后,剩下的其他一些方法呢,大家需要的话呢,还可以来我们这个API里边呢进行查找啊。
我来说两句