00:00
各位同学,接下来我们给大家介绍这三种方法,通过线程内自带的中断API实现我们对应的需求。好,那么终于讲到了这三个,那么请大家呢,注意听,看看这些方法是如何编码落地完成我们同样的动作,实现停止中断运行中的线程,那么来先做个小小的复习。和我们做一下,透过线下看本质做一下总结,这两个我们都会发现线程和线程的协作是。在实际工作中是存在的,那么但是线程和时间是互相独立的,不允许一个线程莫名其妙的突然去stop,去kill,其他线程只能自己线程自己决定自己的命运,自己去写业务,业务逻辑该停还是该走,你自己决定,但是呢?由于大家产生协作,什么时候走,什么时候停,我们是不是要有一些状态的标志位啊,哎,所以说这个我们呢,透过现象看本质就可以获得,在需要中断的线程当中,我们不断的监听中断的状态,那么之前是需要中断的线程当中不断的监听为了太或者是原子波尔形的整力。
01:07
原子布尔型的,这个布尔值出和force以后,我们来决定,一旦发生中断,就执行相应的中断处理,业务逻辑stop该线程,所以说他们都是一样的,哎,思想层面都一样,正所谓万法自然,大道归一,你用完了太阳,你用奥米不而行,我用。这些方法用哪种方法不重要,重要的是思想监听,然后中断。好,那么同学们打开我们的API。中间这个我先取消,大家请请先看本次的案例,这两个实例方法,第一个和第三个,这个就是设置中断标志位,这个就是来看当前的中断标志位真实值是true还是负四,那么由他来决定是否有人需要我打断。打断的话我停止,不打断我继续。好,就这么简单,那么来,同学们。我们搁到这儿,我们继续代码说话。
02:01
这块呢,就是我们的T1,那么现在由于我们需要使用,那么必须改一下我们的这个T1的使用方法好。和之前一样。那么来。拷贝。现在呢,我们呢,搁到这儿。那么我们来判断当前线程啊,那么来同学们是不是我们的接下来做个判断,Is interrupted OK吧,那么现在假设啊,t.interrupted能不能这么写,不可以在这个拉表达式里面,T是定在外面的,那么怎么获得这个T呢?那么就是我们的th.current th,大家请看这个是不是获得一个什么当前线程啊,然后。第二。Is interrupted这个方法,那么相当于说我们跟外面呢,不需要定义额外的变量,我们多线程自身的中段标志位这个变量,这个设值就可以获得,那假如说当前线程就是t is interrupted,那么来就是判断是否被中断过,如果错,那说明T。
03:04
我们的。这个方法。被修改为错程序就应该停止,否则T就哈,那么这我们呢,呃,屁颠屁颠的,我们是第三种方法了,对吧,用interrupt API。OK,那么这个时候呢,就是我们的什么中断API的调用,那么和后面的一样。来吧。后面呢,和之前的一样,也是20秒钟,那么来吧,现在呢,T2。告诉你。我希望干的活是什么意思呢?第一点注意interrupt是不是word来同学们回答我们的是不是调用第一个方法。设置这个interrupt flag,设置中断标志外。为出,那么就是发起一个协商,而不会立刻停止这个线程,哎,那说白了,回到我们的代码,我们可以在。复习一下。
04:01
T2就是我们的服务员,T1就是我们吸烟的那个顾客,那么现在T2对T1发出一个中断协商的申请。这位顾客死餐厅不可以吸烟,能不能掐灭OOK,那么这个时候呢?T,如果这儿收到了,别人希望我中断,我也同意,那么自己写业务逻辑,停止break OK,好,那么同学们,我们来跑一下。那么大家可以看得出,前面呢,我们乐乐乐屁颠屁颠的对吧,直接呢是正在吸烟嘛,就当是你也懂这个意思啊,这就是第三种方法,Interrupt API,然后完了以后一直到这。T2对T1发出申请,Interrupt方法调用,那么这个时候一旦它的中断标识位interrupt flag被人从默认的force改为了错,这块是处进来,那么请看被修改为处程序停止,肯定是处码才能进来,对吧?所以说从这我们可以得到。这个就是通过线程之间的协作啊,这是T2调用啊,当然我们在题外的说一句。
05:02
嗯,语法上T1INTERRUPT,你自己把你某些时候你运行了以后,你自己把你自己中断也是可以的啊,这也是设个中断标注,比如说你自己比较自觉觉得哎哟抽了两口烟以后,发现这不能吸烟啊,自己把它给掐灭了,没有人提醒你,那么也就说你自己把你自己的中断标志位设为了出来同学们漏一眼。我们来看一下程序运行一样的效果OK吧,那么所以说过了一会儿以后你运行是什么情况,过了一会儿以后我们一设置将其中断好,那么这个呢,就是我们对应的呃,中断相关的三种方法的说明好那么。嗯,我们在这呢,可以看一下我们的笔记,那么这个code呢,也是我们现在给当场给大家写过了,那再次强调啊,那么第一种是T2发送,第二种呢是T1自己也可以设置,那么我们在这儿啊,方便大家复习啊,扣的话我们都会当场敲代码,看不看都可以,那么在这儿如果说不放心的同学,我们这儿还有一行啊T1的默认中断标注,诶相当于说T1这。
06:05
Start以后默认的话就应该是个force,没人要求我中断嘛,对吧,那么来同学们,我们呢,来lower这块的话呢,我们产生的结果和效果是什么?大家请看一样,只要我被修改为错,程序停止啊,自己不认可,但是上面请看任何一个线程,它默认的中断标志位,没有人来打断我,没有人要求我中断,对吧?所以说都是副词,哎,如果一设置改为错,那么这个呢,就是我们的第三种方法好。
我来说两句