00:00
各位同学大家好,接下来我们进行第五组对计算结果进行合并,那么主要学一个重要的参数,那就是then combine结果合并,那简单一句话就是两个阶段的任务啊。呃,A跟B都完成了,最后A跟B的结果合在一块,我们能够处理,最终形成一个C,第三个结果作为任务的输出产生给调用方,那么这时我们的人combine by把两个结果可以合并,形成一个最新的结果集。那么其中呢,有一个细节,由于两个人要去打配合,那么先完成的就要先等着,那么等待其他分支任务过来跟我一起合作好,那么接下来我们来看一下,先看一下这个标准版,我为了方便大家理解,我先把它拆分,那么现在呢?我们和以前一样啊,那么complete future因为写到这儿,那么也快接近尾声,那么同学们也应该呢,是非常的熟悉了,好,那么这些小语法呢,大家呢啊,尽量的抽时间呢回去练练。好,那么这个呢,哎,假设我们的第一个任务啊。
01:03
那么这个呢?启动好,那么它呢。干一件事情呢,很简单,嗯。假设就一秒钟以后吧,算出结果,他算出来的结果是十,OK,那么同学们。那么接下来呢,我们来看一下这个呢,就是我们的呃,Computer future,这个OK,那么就是我们的第一个同学们没问题吧,好,那么第二个呢,和这个呢差不多。那么这个呢,是我们的二号,那么它也启动了,他呢算的时间呢,假设要两秒钟啊随便,那么这个时候呢,它算出来的结果是20,那么现在大家请看我们是不是有了两个异步任务,一个是FUTURE1,一个是FUTURE2,好了,那么接下来FUTURE1。然后呢,我们调用我们的最重要的这个then combine合并,OK,请看分几个阶段,两个就是它呢,就是阶段一,再传我们的阶段二,那么就是我们的FUTURE2,然后BI function,为什么?因为阶段一和阶段二你们两个要合作,作为两个数参数共同产生一个结果集,第三个好,那么现在大家请看我们是不是就是一跟二进行combine合并,合并了以后。
02:20
此时传入我们的第二个参数,这个参数这个function,那么相当于就是我们的X和Y对吧,相当于我们就是FUTURE1和FUTURE2,好了,那么你们两个合并了以后,你要干一件什么事呢?那么。开始两个结果合并,OK,完了以后我们要有一个返回值,返回什么呢?比方说是X啊加上Y,那么大家都清楚啊,十加上20,那么现在是不是等于30,好,那么完了以后,那么这个。就是我们的result结果没问题吧,那么。两个结果合并了以后,就是我们的第三个结果,也就是我们最终的final,这个结果好的,那么这个结果我们呢,用我们的join或者get,那么两个处理异常我们就用join,那么大家请看现在这个要一秒钟,这个要两秒钟先完成的,先过来等着,那么所以说大漏眼。
03:20
我们呢,后台所见还是用于原来的线程池对吧,一号任务启动,二号任务启动开始两个结果合并,那么大家请看十加上20,最终等于30,哎,这个很简单,主要就是什么?我们的一些合并相当于取我们的一个,这个甚至还可以取交集,取并集,类似于这样的一种思想,好,那么同学们这个呢,就是我们的标准版,我给大家呢,进行一些拆分,很简单吧,第一步,第二步,最后他们两个来调then combine这么一个合并函数,那么。讲到这儿,我们的computer future几乎已经接近尾声,最终布置给大家一个家庭作业,写写这个小案例,那么来我把它拆解了,求大家呢,把它合并,那么来怎么玩呢?
04:04
就按照我的这个代码,大家可以参考给我把它写成写成合并的作业,那么大家请看啊,这个呢,最终的结果就是等于你看这个是不是第一个。对吧,相当于我们的FUTURE1RETURN10THEN combine,你跟谁合并?那么大家请看,我就跟第二个合并,那么合并以后上面这个就是X啊,下面这个就是Y,那么X加Y是一个BI发X的函数型接口,那么它们两个干嘛?又一跟二合并出了一个新的结果集X加Y,然后这个结果集以后还可以和。第三个来进行任务合并,那么又获得。另外一个新的最终的结果值,OK,好,那么可以请同学们呢,做做这个小练习,练练手,把这个呢由我的分解版写成合并版,好,那么各位同学,我们对computer future就给大家介绍到这。
我来说两句