00:00
各位同学大家好,通过前面的讲解和学习,我们对future的优缺点都给大家以案例编码的方式做了一个陈述和总结,那么可以获得future的两大缺点。那么。在日常的使用当中不见得尽如人意,所以说我们慢慢的就会给大家推测出来,为什么会有后面的这些新技术,那么它不好是不好在哪儿,怎么样,怎么样一步一步的改良,获得了我们更好的最佳性能,这个就是一种什么迭代的思想,好,那么除了要规避这两个缺点,那么我们还想增加一些复杂的功能啊,我们来大家看一下。来吧。首先来说一下,对于简单的业务,你这样使用是没有任何问题的啊,但是对于太多的高并发的一些复杂业务,你不停的去轮询或者容易导致阻塞,那么或多或少总有一些什么潜在的风险,那么这是其一。其二,对于future而言,我们更希望这个异步程序,异步任务获得的返回值等等,它的功能更加的强大,比如说。
01:07
我们现在需要有一个回调通知啊,那么前面我们讲过什么概念,我们要不停的去问,诶,你做完了吗?做完了给我,诶,你做完了吗?你看不停的问,诶你做完了吗?做完了给我,你做完了吗?做完了给我,那么这样的话呢,是不是就很啰嗦,导致CPU空转,所以说我们希望的是应用future的完成时间,对应着你future这个异步任务,你完成了,你可以主动通知我们,也就是我们的回调通知,通过轮训的方式呢,去判断任务是否完成,这样的非常占CPU,而且也不优雅,所以说我们希望就是什么概念,比如说你这个异步任务啊,对经典啊问complete。你什么时候完成了,你什么时候给我一声通知啊,那么这样我是不是就不用去不停的去轮询来问来问你了,你反回来你主动通知我,OK,那么也就是说当我们有一个温complete的时候,你就可以主动通知,好,这是我们的第一个小诉求,那么第二个创建异步任务,那么自然而然是不是要。
02:05
回答我们的呢,就是尽量把那些复杂啰嗦好事呢,交给我们的异步任务主干呢,还是专注于自己的业务逻辑,不牵扯自己的经历,所以说希望你能够创建异步任务,提升程序的性能和效果,那么自然而然,弟兄们,我们前面也说过future加线程池的配合,那么注意这个线程池是不是也很重要,那么我们comp会不会也有线程池呢?我们先卖一个关子好,那么在这我们可以获得这两个可以提升程序的性能,那么第三一个。现在呢,我们那是多个任务前后依赖可以组合处理,那这是啥意思呢?啊,我们前面我们那个就是这个案例的时候,我们是不是说过三个线程。各自去完成各自的任务,他们之间是没关系的,但是不排除我们有些业务它是按照步骤来处理的,那么来请看一下这个解释,请看。我们现在呢,想将多个异步任务的计算结果怎么着组合起来,后一个异步任务的计算结果需要前一个异步任务的值,哎,注意他们不再是各自独立,是前后有依赖关系的,那么既然两个或多个异步计算结果能够合成一个最终的结果,那么这个异步计算结果呢,它的计算。
03:22
既相互独立,但是呢,后面这个呢,又依赖前一个处理的结果,什么意思呢?那么同学们,我们先说最简单的假设,我现在要做一道菜,水煮鱼,那么第一步。干嘛买鱼没错吧?第二步是不是要调味调料对吧?第三一步怎么着,是不是才下锅,才去烹饪,去做菜,那么现在我们会得到一个结论,就是说这三步是一体成型。步步依赖的巧妇难为无米之炊,你要让我做水煮鱼这道菜,那起码先得给我一条鱼吧?所以说我们现在第一步买鱼,第二步调料,第三步下锅,那么这个时候他们呢,是一个完整的链路,相当于。
04:10
当前这一步的处理依赖于上一步的处理结果,OK,那么所以说回到我们这儿。计算呢,互相独立对吧,你买鱼,你去外面菜市场去买调料,再加,下锅再加,那么同时后面这个又依赖前一个处理的结果,OK,那么再说直白一点,有点类似于我们的Linux命令,比方说杠竖线gra,他们看我相信。这个命令大部分同学都能看得懂吧?那么是不是杠F给我把Linux系统后台的全部?进程给我打出来,那么可能有100多个,那么在这个里面给我搜索含有他们看的,那么回答我是不是上一步的结果集可以作为下一步的输入参数供给下一步去继续使用,那么他们两个前后是有相互依赖关系的,那么对于这样的任务我们呢,用future是做不到,所以说我们需要进一步的改良和加强,那么再来看对计算速度选最快的。
05:10
那这是什么意思呢?那比如说啊,同学们再举个简单的案例,那么大家呢,一定玩过什么俄罗斯方块啊,连连看啊这样的一种。小游戏吧,那假设啊,这个呢是A选手,这个呢是B选手,那么相当于说在这个游戏的进程里面是不是有两个。异步的县城,各玩各的,我们两个没关系,我们两个正在PK呢,你死我活,那么假设他们玩俄罗斯方块,那么这个时候就是不停的。在激发,在进行这个消消乐一样的,对吧,都都明白俄罗斯方块消消乐这样的,那么谁先完成了,那这个就是什么,他会打一个winner。OK,那么这个失败了以后是会打个loser,那么换句话说,谁先完成整个程序就停止,那么把最快的那个给我,作为胜利者返回给用户,那么所以说这个时候就是当future集合中某个任务最快结束的时候,返回结果,返回第一名。
06:05
处理对应的结果,那么谁最快,谁就是第一名,谁就是这本轮游戏的玩家,OK,所以说那么当然还有其他的,那么不一而足,那么我们现在呢,要解决。规避这两个痛点,而且还想加上我们这些新功能,那么所以说我们一不做二不修,就从future接口产生了更强大的compatible future处理类,那么所以说兄弟们,我们可以明白。以前呢,我们要使用future提供那点API,想处理这么多事就有点囊中羞涩,那么力有不处理起来也不够优雅,这个时候呢,我们就可以让comp future以声明式的方式优雅的处理这些需求,那么现在同学们请看一下,这是我们的。Future接口吧,这是我们的异步任务接口。那么。几个API,你看这个这个,那么当然啊,我们这就不再是给大家呢来演示这些API,主要是说这些底层原理和演变的设计思想,有兴趣同学可以自己去调用一下,但是至少我们也讲了大部分了一大对吧,那所明说什么,如果我们这些复杂的需求,你想仅凭这么几个简单的API是做不到的,所以说呢,我们呢,只好呢另起炉道。
07:20
从I到I加加,一句话,Future就是这个ii,加加就是这个computer future后面的都会比前面这个更强大,更能干,那么future能干的comp future都可以完成,也能干。所以说从此我们将会正式给大家介绍。Computer future future的改进以及我们的后续,可以大家可以看得出computer future,它有多么强大的功能,OK,好,那么这个就是我们对改进思想的陈述。
我来说两句