00:00
各位同学大家好,接下来为大家介绍第三章compatible future,那么首先来看一下这章的大纲,那么将从如下几个知识点向大家进行介绍和讲解。那么重点提一下,到这一节的时候是我们的案例精讲,来自于真实的互联网大厂电商比价的需求,就是我们的多接口异步任务。多线程提高接口性能的一种功能,比较需求是真实的案例,有兴趣的同学请跟我深度研习,认真操练好。那么不多说了,我们来开工。那么到这儿我默认大家呢,是了解Java多线程编程知识和GC的初级知识,也就是说我跟你说future接口你应该是清楚的,那么大家请看啊,以前呢,只有future接口,它是JAVA5就有的知识么,现在就来这个comp future,它是JAVA8才诞生的,那么自然而然后面的技术接口和类自然而然会比以前的功能更加强大,所以说请同学们放心服用,这张完成以后,你多线程异步编程的能力将会大大提升,好为了保证大家学习效果。
01:09
请允许我先带着大家复习一下future接口相关的理论知识,然后我们再一点点从简单到复杂,一点点给大家推出来。为什么会出现了future这样一个新的类?好,那么话不多讲,开工,那么接口复习请跟着我来。所以future接口它定义了操作异步任务执行的一些方法,那么这些方法有异步任务执行,想获取这个任务执行完成以后的结果,在任务执行过程当中。我可以随时取消这个任务,那么来判断一下这个任务当前的进度做的如何,到底有没有完成,那么甚至来判看这个任务到底有没有被取消,那么这些是来自于哪儿呢?我们打开我们的源码future,什么接口?大家请看哪个版本JAVA5就具备,那么打开这个接口,大家一眼什么东东?
02:03
是不是这一个接口就有取消任务,获得任务的结果?按照一定时限内要获得任务的结果是否被取消,是否完成,那么对应照我们这儿的笔记说明,这个接口其实就是定义了一堆规范,来保证这个异步任务执行过程中的状态反馈,以及获得这个任务的执行结果,那么大家都清楚。凡接口必然会有实现类,OK,那么这个future task就是future接口的一个常见实现类,那么天上飞的理念必然而然会有落地的实现,这个就靠我们的future接口来给我们定义、规范和约束,那么它是如何出现?又解决了哪些痛点呢?来同学们,比如我们现在主线程让一个子线程去执行一个任务,哎,那么子线程执行的这个任务呢,可能比较耗时,那么启动子线程开始执行任务以后,主线程就可以去忙其他的事情了。那么对于。
03:05
过了一会儿以后,我们才会去获取子任务的执行结果,或者变更我们的任务状态,说白了就有点儿类似于什么主线程,现在呢?万事缠身,特别特别的忙,那么对于一些耗时耗费精力的一些任务,那么就让我的秘书去帮我挡一下,那么这样可以更好的让主线程去忙更重要的事情,或者让主线程直接先执行完。他先去休息,子线程你慢慢的帮我处理,那么好,我们不妨呢,用上课买水这样一个案例来给大家做一下补充,那么大家呢,可以看一眼。在讲台上这就是老师,下面就是各位同学,目前我们就干一件事,假设我们的main方法,我们的主线程的这个业务,就是他干嘛,就是对大家进行讲课,好,一切都很顺利,但是突然。讲着呢,老师呢。嗓子呢,干渴难耐,我发现我忘记带水了,那么此时又不能中断讲课,我就陷入了一个两难的境界,按照教学的要求,此时是上课时间,我必须要瞒着主线程给大家进行讲课内容,但是呢,我嗓子冒烟了,我又特别的口渴,特别想喝水,那么但是如果我要去喝水的话,我只能自己下去买,那么就要中断我们的主线程讲课,这是不可以的。
04:26
那么有没有一种两全其美的方法呢?我又不中断讲课,还能够喝到水呢,但是呢,现在如果你只有一个线程,它是做不到的,对吧?你要么在教室,要么去小卖部,那么此时,那么老师呢,只能想到这么一个方法,在主线程不中断的前提下。我继续讲课,我兴起一个线程。好,假设这个线程就是我们的什么?班长好,相当于说我麻烦班长。那么下去,小卖部。
05:02
买一瓶矿泉水。OK,那么此时大家都清楚,我可能会跟班长说,班长辛苦你了,老师上课呢,这个主线程,这个主业务不能中断,麻烦你替老师跑一趟,那么此时班长呢,就会去做这个耗时费力的任务,那么他呢,可能呢,下去以后买完水回来了以后又把水交给老师,那么这样是不是相当于我主线程并没有中断而。异步的一个线程又为我去处理这些费时耗尽的任务,那么这样我是不是可以两全其美啊?哎,所以说我们大家呢,就会清楚,再来看看这句话,那么让主主线程让子线程去执行任务,然后呢,那些耗时费力的业务让子线程去干,保证了主线程的主要精力去买我们更重要的业务逻辑,所以说这个future接口就是俗称异步任务接口那么一句话。
06:00
Future接口可以为主线程开一个什么分支任务,他就相当于帮老师去买水的那位班长,那么专门为主线程处理耗时和费力的复杂业务,这个就是它出现的原因,以及为我们解决的痛点。
我来说两句