00:00
同学们大家好,接下来为大家介绍compatible常用方法,那么通过上一讲我们应该明白了我们的compatible future怎么用的,用在哪?OK,在项目上给大家说了一个来自一线的生产案例,电商比价好,那么接下来我们呢,给大家说一下computer future它的一些常见常用的API,也是提升大家在一线实际生产当中你的硬核编码的能力,好,那么同学们我们都晓得com future肯定要比future强大,那么这是为什么呢?来。还记得我们这儿说过一个com future,它是同时实现了两个接口,一个是future,一个叫comp。好,对于future接口我们已经是非常熟悉了,但是对于它我们再来看一眼。请看。异步计算的某一个过程,这个已经说过了,不再赘述,但是同学们一个阶段的计算执行可以是一个function consumer或者reable,嘟嘟嘟嘟嘟嘟,这些好像还没有给同学们做深入的展开,这是其一,其二。
01:03
我们回到我们的computer future的源码,我们强调过它比它要强大,为什么?点开我们这个全部看一下它的API相关的方法有几个。将将他有五个五个方法怎么可能包打天下,所以说我们在这儿又实现了第二个接口,那么这个接口comp stage,那么一步完成了,一步一步的阶段,好大家看一下。还有多少个方法,从数量上也明白,肯定要比future更多更难吧?好,那么所以说本讲我们将会给大家做一下这些方法的介绍,当然大家放心,以大家的水平,我们到高阶层次的学习,我不可能挨着从A一直给大家讲到W,对吧?那么只能说把他们分了类里以后,给大家进行一进一步的介绍,好,那么同学们请跟着我来。第一个。我们呢,来看一下。我们呢,将这些API不是按个数挨个挨个介绍,将它分成五组啊,常见常用的给大家介绍啊,接近三四十个,有兴趣的同学,那么可以下去呢,自行研究,但是按照我的分类给大家演示完成以后,我相信你也可以什么做到无师自通,好第一组获得结果和触发计算,那么来同学们。
02:22
第一组,Get get join。前三个应该不陌生了,那么第四个我们给大家说一下,Get now,好,再来看。主动什么触发计算?这有个东西叫complete,大家请看,返回是不二型,好,那么话不多讲,咱们代码说话。现在我们新建一个类future API DEMO。那么根据我们的。编码规则希望它呢是有一个返回值的,我相信这个呢,大家已经非常非常的熟悉了,那么好,现在呢,我们呢,假设业务逻辑处理呢。呃,需要一秒钟。
03:01
Return,那么这个时候我们这个的话呢,我们就返回一个ABC可以吧,那么在这块完成以后,我们这儿呢,就是一个comp future,那么comp future。了,以后我们这儿get。OK,那么前面说过对概的方法要求抛出一个异常对吧?那么来,同学们,一秒钟以后我呢,将能够获得我们的值。好,那么各位亲,这个呢,已经非常熟悉了,不再啰嗦,那么这个是第一组。那么。我们再说一下我们的第二组,对于我们的get,我们强调过这个get的话,那么假设我只愿意等待两秒钟,对吧,那么对于我们的这个单位,但是呢,这个get以后,他还要再抛出一个timeout exception,那么现在呢,我呢要执行的时间呢,是三秒钟才能完成这个业务逻辑,你只愿意等两秒,那么来我们统一的,虽然说前面已经介绍过了,再带着大家再复习一下,那么大家请看此时。
04:05
两秒钟以后,你不给我,马上就报我们的time out exception。所以说这两个方法,第一个是不见不散,只要get了会容易形成阻塞,非得拿到结果,否则的话不走。第二个呢,过时不候,我只愿意等两秒钟,假设你不,两秒钟以内你给我,我直接输出结果,不给我,我报他们out exception,好,这是我们的第二个,那么第三个join,我们前面呢?强调过get。和。就应的功能几乎几乎是一致的,其区别就是是否抛出我们相关的异常对吧?那么这个时候就应来搞定,我们现在假设回复到我们的代码就一秒钟,那么来,同学们,我们join跑一下,请看这个注释,我已经拿掉了,那么一秒钟以后join ABC可以获得它的作用和get是一样的。好,这是我们的第三个,那么这三个前面或多或少都给大家做了演示和讲解,不再重复啰嗦了,下面这两个就是新的,那么来get now。
05:08
这个呢,有个value if absent,那么这是什么意思呢?Future get now,大家请看这个方法里面要传一个。Value if absent这个类型到随便啊,看你行,那么也就是说要传一个参数进去,那假设我们这就叫叉叉叉。好,大家请看get now get和get不一样,它并不需要有这些异常。OK,第二个同学们,我们来看一下圆满和对这个方法的解读。Get now这个方法它告诉你的是如果计算完成了,请返回一个结果值,或者是,当然啊,有可能也会抛出计算过程当中的异常,这是另说啊。否则的话,也就是说没有计算完成,你看if completed,那么这个呢,是value,否则的话返回给我的value if absent指定的这个值,Absent是缺席的意思,好,说穿了就这个方法。
06:06
假设。我调用get now的时候,你已经计算完成了,你就把你的正常值给我,但是我来get now,现在我叫要的时候,以前我们说过我现在叫要,要么阻塞,要么我就过时不候,但是现在我们柔和折中一下处理,我给你一个备胎值啊,假设我现在取的时候还没有计算完成,那么我就先给你返回这个。Value if absent这个备胎值,好,那么同学们,我们先来给大家跑一下。那么现在程序可见一秒钟以后大家请看什么概念,一秒钟以后你才能计算完成,但是现在我现在马上就要。我不愿意等这一秒钟,大家请看给我的是什么叉叉叉就是这个备胎值啊,OK,好,那假如说。我现在两秒钟以后才过来找你要,那么这个时候同学们,我们来看一下我们的程序。
07:02
大家请看此时的话。一秒钟计算完成,但是两秒以后你才使用,这个时候怎么着,是不是就是已经计算完成,返回正常的ABC,这个正确的计算值好,这个呢,就是我们的什么get now,说白了它就有这么一点细节,没有计算完成的情况下,给我一个替代备胎,立即获取结果,不用阻塞,是对get的一种增强和保护,计算完了返回计算完成后的结果,没有计算完,返回设定的value ifent这个值好,那么这个呢,就是我们的get now,那么最后一个,这个叫。Complete,那么这有个T,它的作用呢,和get now呢有点类似,但是呢也有自己的特点,好首先。这个呢,返回一个实际的值,这个呢,返回一个布尔值,我们来看一下它的方法名词的解释,Complete是否打断get方法,立即返回括号里面的值。好,那么同学们当然。
08:01
除了get方法以外,就应方法也可以啊,我们现在呢,给代码呢,给大家演示一下来,Complete,现在它这呢,要有这么一个,那假设啊,我这个括号里面的值呢,我就继承了compete。完了,好。来join也是一样的啊,不用抛异常,什么意思呢?计算时间两秒。等待时间一秒一秒钟以后,我就要要说明什么,他根本还没有计算完成呢,你就要提前去取对吧,那么前面这个呢,我先给大家注掉,来同学们,我们跑一下代码。两秒计算,一秒获取,一秒以后大家请看,Complete什么意思啊,True意思就是说我打断获取这个过程,直接把这个值啊给你,你拿着走吧。OK,所以说呢,它呢也比前面这些呢,要更加的好一些,不用抛什么异常啊,或者阻塞也是对自己的什么一种保护好,那么接下来对调一下一秒钟。
09:03
两秒钟计算时间一秒等待时间两秒,时间很充裕,好,那么同学们请看,也就是我给你的这个时间呢,是够够的,那么有没有打断,没有,它是force,那么一秒钟以后计算完成了,ABC可以给你提供弹药作为返回值,返回你两秒钟以后才过来取,所以说这个方法它就是个false,直接可以获得,哎,所以说我们可以用complete true和false在后续的程序当中进行一个判断加固,那么看看它返回的是计算值还是这个括号里面的值,OK,好,那么同学们,这个就是我们的第一组获得结果和触发计算,呃,代码呢,我们都给同学们呢进行了。当场的编码讲解啊,这个现在我就不再打开。
我来说两句