00:00
大家好,我是海波老师,我们继续来讲Java语法中的线程,接下来咱们讲一讲多个线程之间的执行方式,这里所谓的执行方式呢,就是串行执行和并发执行,我们这里呢,把这个类呢,我们拷贝一下,我们写上一个零二啊,咱们点击OK,然后呢,我把里面的代码呢,咱们先给它删掉啊删掉啊去掉,去掉以后呢,把这个先改成一啊,啊改成改成一,我们这个一会再改一下啊,来这里呢,我们就改成我们的零二就可以了,好,我们写上它,咱们叫执行方式,那么这里呢,我们有什么呢?叫串行执行啊,串行咱们叫串行,还有一个叫做并发执行,我们两种方式,那么这里呢,所谓的这个串行执行啊,和咱们之前所说的那个顺序执行还不是一回事,它表示将本来应该独立运行的多个线程的连接成串,是我们的多个线程它连接啊成串,哎,就这个意思啊,然后呢,然后按照顺序执行,诶有这么一个概念啊,来咱们执行。那好了,那咱们这里呢,就来看一看吧,首先我们这边有一个my thread1,这是我们的第一个啊,咱们的线程好了,然后呢,第一个线程以后,我把这个改成我们叫做横线一就可以了,那接下来我们再来拷贝我们的第二个线程,我们叫my thread2,我们的第二个线程好了,那么第二个线程呢,我的这个地方我就改成二就可以了,别的我都不变啊,那么接下来我们现在呢,干嘛呢?我们就写上它,咱们叫thread啊,诶不对,咱们叫my thread1,然后写上一个T1,它等于啊来等于new,咱们叫my thread它好了,行了,那我写完之后,那咱们接下来咱们往下来看干嘛呢?我们现在再写上一个第二啊,来写上一个二,然后呢,我们再写上一个T2,再写个T2,两个线程就都有了,记住啊,我两个线程,那么接下来呢,我就写上它叫T一点我们的start。
01:53
好,我们T2点我们的start就可以了,写完之后我最后呢,写上它,咱们叫main线程,哎,执行完毕大家还记得吧,咱们的闷方法就运行在我们的主线程当中,那么你运行完毕之后,这个进程就结束了,咱们之前讲过吧,诶咱们执行一下,咱们看一看结果啊来。
02:14
现在呢,我们就运行,运行以后大家看结果,你会发现我们的main线程执行完毕之后,这个是12的零和11是不是都打印出来了,咱们这里呢,多执行几次啊,咱们叫闷零一,咱们来运行,运行以后看结果。大家看一下还是闷零一,咱们再运行一下啊,看看有没有什么变化啊,运行运行之后,诶,同学们有没有发现这个闷的后面是一和零啊,这就意味着呀,咱们多个线程之间其实是独立的,他们互相不影响,所以呢,我们打印的顺序呢,其实是不确定的,对不对,那么这种方式我们就称之为叫并发执行,所以啊,咱们这里也写上它来,咱们写上它叫并发执行,并发执行呢,就是我们多个线程是独立的啊,它是我们独立的,谁抢到了啊,说一下我们叫谁抢到了我们的CPU的执行权啊执行权,那么谁就能执行,谁就能执行,所以不确定啊,对不对,只不过呢,因为咱们这个闷呢,他没有准备工作,他一执行就执行完了,所以他会在第一个,但是你这两个就不确定了嘛,对不对,诶谁在前谁在后确实是不确定的啊,哎呀老师,那现在我想把这两个线程的连接成串这么。
03:30
班什么叫连接成串,把我们三个线程连到一块儿去,那这个时候就需要一个专门的方法了,所以咱们说一下来将我们的线程啊,它连接成串,哎,我们的成串怎么做呢?我写上T1,咱们叫做点join,这个join什么意思呢?就是把当前的T1线程跟我们的主线程连在一块儿,就意味着这个线程的先执行,它执行完了才能往下走这儿,所以这个join方法就加入嘛,对吧,加入到当前的代码的位置,所以啊,它有异常产生,咱们这里为了简单起见,我们写上它叫exception好了,那我写完了以后干嘛呢?我再写个T2,第二就啥意思,很简单,连接成串,我先把T连进来,我再把T2连进来,什么意思?它执行完了才该它,它执行完了才该它,就是这个意思,好了,那么现在我们运行一下,咱们看一看,这就是串行执行的概念,运行运行。
04:30
之后看结果,咱们的T1就会先执行,咱们的T2就会后执行,最后是我的主线程对不对,哎,你多次执行,你会发现一样的好,我们再来执行,记住啊,你会发现我们的01MEN再来再运行一遍。运行之后还是零一闷,最后再进行一遍,你会发现没有问题,完全一样,所以啊,这就是我们所谓的串行执行和并发执行的区别,并发执行互相没有影响,你做你的,我做我的,反正我只要抢到了CPU的执行权,我就能执行。但是串行执行呢,把它连接成串,在前面加入的应该先执行,在后面加入的应该后执行,对吧,就是这个概念啊。
我来说两句