00:01
各位同学大家好,下面呢我们继续来学习Co a接口,刚才呢给大家介绍了future task的特点,包括它的原理,那下面呢,咱就通过future task实际来创建一个线程,给各位演示它里面的代码编写过程,那下面我们就来做一下。刚才咱们写了两个future task这么两个对象,一个叫future task1,一个叫future task2,那我现在比如说我以这个为例,我在future task2里边,为了咱们效果明显,在里边我加个输出,就把当前的线程名称输出一下,为了一会儿能看到效果,Current threat get name后面给它加上一个标识,给来一个叫。抗议啊,就是进入到咱这个口able里面来,这是我们写的这个,然后写完之后下面呢,咱就来创建我们的这么一个线程,那怎么创建直接new上一个thread。
01:09
然后在里边加上咱这个叫future task2。然后洗完之后在里边再加上你的线程名称,比如说我的第一个线程,我就叫Lucy,最终调用这个star方法,所以现在这个线程我们就完成了,创建这个就可以了,然后完成之后,下面呢,咱们来调用一下。Future task中的有一个方法,这个方法叫get方法,Get方法来得到里边这个返回结果,那我们这里边调用一下,咱们直接做个输出future task2点盖的方法,能得到你最终的这么一个结果。所以现在我们把这个执行一下,咱们看一下目前的效果是怎么样的,我们来看一下啊,首先大家看Lucy这个线程是不是就进入进来了,最终把1024咱是不是就返回了,所以现在线程就完成创建,而创建之后咱为了效果更明显,我在里边啊给各位再加上一段代码。
02:20
那咱来一个while循环,循环里边咱们做个判断,用future task2中有这么一个方法叫stone,就表示你的计算是否完成,而咱们先来一个杯,如果说它不完成,那咱们做个输出,我就来一个叫wait。咱们给他输出一下。然后这个选完之后,最后呢,比如说我再给他加上最后一个输出。最后输出中呢,咱也是得到当前这个线程的名称。然后得到之后,就是最后加上一个说这个线程,最终它已经这个。
03:01
Over结束了啊,这是我们写这个代码,比如说这行代码中判断当前这个是否已经计算完成,如果没有完成,我们输出等待,如果完成的话得到结果,最终我们做一个线程的结束,那咱们看结果。咱们看它怎么样的啊,大家注意。前面是没有完成,是不是一直在等待呀,然后最终完成输出是咱们的1024,包括最后这个主线程结束了,因为咱们的主线程是不是这个问方法,所以这里边最终结束了,这是我们创建线程的这个过程。然后创建之后呢,给各位再来个效果啊,比如现在哈,我用这个future task的二,咱们盖的方法得到两次,咱看是怎么样的,刚才我说过用未来任务,它是不是只会计算一次,第二次他就直接给咱们返回结果,那咱们执行一下,咱们看它是怎么样的啊。
04:05
大家注意第一次的时候前面是不是等待,就是它里面做了各种计算,而第二次的时候没有计算吧,是直接返回结果就是这个get方法前面做了各种计算,然后咱们等待这个get的方法直接返回了,用二次最终主线程结束了,所以这是我们刚才说到的这么一个特点。这各位给他知道啊。然后这个说完之后,其实咱们可以创建多个线程,比如现在我再讲一个效果,咱们new上一个thread,咱加上这个叫future task1。这个我们叫。点上一个start,然后这里边我们用这个future task1给它也是get一下啊,为了明显这行我就注掉了啊,然后咱们看它目前的这个结构,呃,包括这里边我把这个。
05:00
名字啊,在这个类中咱也做一个输出啊,就是它进入了,然后现在我们执行一下哈,目前咱是有两个现成的这么一个创建。然后大家看结果啊,麦瑞先记住了。Lucy进入了,这是他们的反应结果,最终主线程是不是就结束了?所以现在通过filter test咱就完成了进程创建。比如说这个过程中,我们先执行第一个线程,然后第二个线程,最终再进行汇总。现在啊,通过Co咱就说完了,怎么来创建我们的线程,这个过程中大家重点掌握这个叫future task未来任务就是我刚才讲这个原理,然后这个代码在里边,我们也都做了这个演示,刚才演示过程中呢,其实咱们主要演了演示了三个部分,第一部分我见了一个贝壳char子,然后用钙的方法调了一次得到结果,然后我又调了两次,发现第二次直接反应结果,然后我们的第三个咱们建了两个线程,发现两个线程都结束之后,最终你的main的主线程才结束,所以现在通过口语宝咱们就演出来了,线程到底该怎么进行创建。
我来说两句