00:00
各位同学大家好,下面我们进行第二组API,给大家进行说明,对计算结果进行处理,主要是两个方法,Then apply和handler,那这个是什么东东呢?来,其实他们两个一样啊,区别就是对异常的处理,那么两个都是什么,对计算结果呢?存在着依赖关系,使两个线程串行化。简单的来说,我们之前讲过一个案例,水煮鱼。鳗鱼调料下锅。你完成第一步以后,先买到余了,上一步的计算结果可以续传给下一步,有余了以后我才能调料,有料有余了以后,第二步的结果才能传给第三步,我去下锅烹饪,OK,好,那么同学们我们来看一下,那么第二组我们A2好。和我们以前一样。来吧。现在呢,我们模拟。一秒钟以后我们出运算结果,假设这个时候呢,就返回一个一对吧呢有返回值,然后呢,Then第一步完成以后呢,大家请看这then是不是有很多啊对吧?我们先来第一组,那么后面我们还会给大家其他介绍来。
01:10
这是什么?Apply传递一个什么东东?Function,它的意思就是什么F?来。那么继续return,然后呢,变成我们的F加上二。OK吧,那么来同学们,相当于啊,这个一秒钟以后。这是我们的。第一步。OK,买鱼。这是我们的。第二步调料,那么第三步以后我们干什么呢?还和之前一样,还可以续传。Then,那么这是我们的第三步,OK,好意思呢,就是说上一步的结果集。一可以作为这个输入参数传给下一步再进行续传和计算,好,那么一二假设我这就是三,OK,那么来问。Complete,那么这个时候就是我们的两个参数,前面已经给大家详细的说过。
02:05
它呢是一个BI consumer类型。那么现在E。如果说等于,那说明没有什么异常,那么这个时候我们的计算结果,那么来同学们,那么加上我们这个VOK吧,否则的话,我们exception现在这个时候就是我们的一个异常。那么来1.print来这个时候呢,打印出。我们为什么会报这个错,然后。由于是。Li的,必须要有一个反馈值,我们这儿呢,就反馈给你个蛋,OK,来,同学们,这个相当于说第一步,第二步第三步,对吧,买鱼调料下锅,最后水煮鱼上桌,如果有异常了,你告诉我,OK,那么来来吧,这个then apply上一步的运算结果可以传递给下一步,好,那么来吧。搁到这儿了,以后我们呢?
03:01
这个呢,不用说你也明白是不是我们的。卖主线程。对吧。直接就这吧,我们的主线程和以前一样,好吧。先去玩其他。任务OK,好,那么同学们。继续回顾,继续学习新的东西,大家思考一下,我这能不能获得中间打印出来的这些东西?好,那么同学们,我们先跑一下。走。大家请看主线程,先去忙其他任务了,哎,呃,你不是计算完成应该有这个结果吗?没见你出现啊,想一想这是为什么,我们前面说过,我们说过它默认的话是不是用的那个folk join那个线程池啊,你这个太快了,May任务一旦这个用户线程结束了,它后面的也就什么敲门的也就消失了,所以说在这儿我们以前说过这么一个东东。第一种你的解决方案,那么同学们。
04:01
我们说过。是不是?主线程不要立刻结束,否则的默认的线程只会立刻关闭啊,对吧,我们这儿故意停一点时间,这是一种,那么第二种的话呢,我们也说过,干脆带带着大家来给复习一下,那么我们另一个啊,假设自己的一个线程池pro。OK,那么来,首先在这儿。丢进来,然后呢,我们呢。教他答,OK,那么我们呢就不再使用这个好,两种都给大家呢做了一个复习和说明,那么下面我们来看一下吧,那么123跑起来以后,能不能获得我们的计算结果,分别值是多少呢?大家请看,和之前的一样,没方法先去忙其他任务了。另外三步123,最后的计算结果一加二加三就是六,OK,所以说各位亲,这个就是我们的什么计算结果存在依赖两个线程像串行化一样,好吧,那么接下来呢,Then apply它呢,也有对什么异常的处理情况。
05:05
好,注意,由于存在着依赖关系,当前步错,当前步骤错了步骤,下一步当前步骤有异常的话就叫停好。那么同学们,我们来思思考,并看一下这样这样一个问题。第一波买鱼,然后传过来,但是不好意思,调料的时候失败了,我们这in特I等于十除以零。好,同学们老现在第二步是不是就已经失败,那么来我们来看看,正常情况下是能够获得我们的计算结果六的,那么现在如果我们失败了,那么同学们看一眼。在第二步就经完活,卖完其他的第一步。有,但是第二步就报错,戛然而止,就停在这了,OK,那么所以说这个就是它对异常相关的处理来与之相对应,Handle德,那么它又是干什么呢?它的正常情况和这个一样,区别就在异常的话呢,它呢可以有异常,也可以带着往下走,根据带的参数可以进一步处理,那这是什么意思呢?来,同学们请看。
06:09
这是不是我们的then apply这一波没问题吧?那么现在我们把它换了,换成hand德拉,大家请看。Handle是什么?BI function传几个?只要是BI传两个输入参数,那么它有反馈值啊,第一个我们正常的这个。呃,结果集第二个要传一个什么异常好,那么所以说我们在这呢,我们的参数就变了,就是F和E,这么说能跟上来,同学们请看一眼啊。嗯,把这个then apply就改成了我们的handle啊。完了以后呢,我们先看。假设现在正常情况下,这个handle和我们的the apply是一样的。来,同学们,我们跑一下。此时我们看一下结果,麦先去忙别的了,1233步。六对吧,上一步可以传给下一步,一传给这个FF加上二继续,那么就是三,这个F就是三,三加三等于六,好说,那接下来我们要看一眼,我们把它变成I等于十,和刚才一样,它多带着一个E,你可以处理这个E是判断是不是等于难啊,或者是其他捕捉某种异常来做好,那么现在我们handle到也可以。
07:22
实现the apply相关的功能,那么来,同学们请看它会有什么一种什么现象呢?之前第一步出错停了,现在第一步出错没问题。第一步正常没问题,第二步出错,不好意思啊,你该出错,你出错,但是我还可以继续往下走,哎,他能够什么有异常也可以往下走一步,根据带的异常参数可以进一步处理,这个就是两个续传和对异常的处理,那么总结一下,那么各位亲,我们这两个呢,有点类似于我们的try catch finally来。如果exception里有异常了,那么就是TRY和catch,你上面正常如何?
08:02
完成了打印异常如何try catch,如果when complete和结合这个handler呢?有点类似于我们的finally,你最终这个handle你是一定要处理的,你可以带着过去,走过去,OK,好,那么同学们,这个就是我们的第二组,对计算结果进行处理,一般常用的是then apply。
我来说两句