一、什么是Future模型: Future模式是多线程开发中非常常见的一种设计模式,它的核心思想是异步调用。这类似我们网上订餐订座,只要一个电话,客服就告诉我们已经预定成功(实际客服MM啥都还没做好),但是我们这时就从家里出发,同时客服MM也在准备着我们的位置,当我们到了的时候菜和位置也都准备好了。 ...
分类:
其他好文 时间:
2017-08-10 01:29:48
阅读次数:
266
引子: 上图是两个系统交互的情况,现在我想将对外系统的调用做成异步实现,那么就需要考虑两个问题: 主线程可以得到异步线程的结果,在得到结果之后再进行operation-4 ?主线程如何得到异步线程结果? ?主线程在得到异步线程的结果之前是否可以不等待? 可以使用Future模式来实现。 Future ...
分类:
其他好文 时间:
2017-07-15 14:46:48
阅读次数:
156
jdk1.7.0_79 本文实际上是对上文《13.ThreadPoolExecutor线程池之submit方法》的一个延续或者一个补充。在上文中提到的submit方法里出现了FutureTask,这不得不停止脚步将方向转向Java的Future模式。 Future是并发编程中的一种设计模式,对于多线 ...
分类:
编程语言 时间:
2017-06-18 23:37:52
阅读次数:
247
解释这个概念之前我们先来了解一个场景吧,财务系统的结账功能,这个功能可能是每个月用一次,在这一个月中相关的数据量已经积累得非常大,这一个功能需要调用好几个存储过程来完成。假如要调用5个存储过程,每个存储过程要执行5分钟左右,那么这5个加起来就要25分钟。现在用户要求优化,把结账功能的时间控制在10分 ...
分类:
编程语言 时间:
2017-06-14 11:31:04
阅读次数:
141
Java多线程Future模式有些类似于Ajax的异步请求Future模式的核心在于:去除了主函数的等待时间,并使得原本需要等待的时间段可以用于处理其他业务逻辑 假设服务器的处理某个业务,该业务可以分成AB两个过程,并且AB两个过程之间不需要彼此的返回结果 A过程需要1秒钟,B过程需要2秒钟,主线程 ...
分类:
编程语言 时间:
2017-05-16 00:40:43
阅读次数:
234
一、Futrue模式 客户端发送一个长时间的请求,服务端不需等待该数据处理完成便立即返回一个伪造的代理数据(相当于商品订单,不是商品本身),用户也无需等待,先去执行其他的若干操作后,再去调用服务器已经完成组装的真实数据。 该模型充分利用了等待的时间片段。简单来说就是,如果线程A要等待线程B的结果,那 ...
分类:
编程语言 时间:
2017-05-12 23:52:09
阅读次数:
379
Future模式核心思想是异步调用。我们可以先拿到调用的凭证,让方法先返回,让他在后台慢慢的处理这个请求。通过这个可以实现异步操作。 JDK经准备好了一套完美的实现方式。我们用于执行的异步线程需要继承Callable接口,相当于Runnable,Callable接口中有一个方法call(),相当于r ...
分类:
其他好文 时间:
2017-05-12 11:41:44
阅读次数:
193
并行设计模式属于设计优化的一部分,它是对一些常用的多线程结构的总结和抽象。与串行程序相比,并行结构的程序通常更为复杂。因此合理的使用并行模式在多线程开发中更具有意义,在这里主要介绍future、master-woeker和生产者-消费者模型。 future模式有点类似于商品订单。比如在网购时,当看中 ...
分类:
编程语言 时间:
2017-04-24 12:12:30
阅读次数:
352
对于多线程,当A线程需要获得B线程的处理结果,而B线程处理业务需要很长时间,这时候A线程如果一直等待B线程的处理结果,线程A才能继续往下执行代码,这种方式在效率不是很好。所以,这种场景可以使用多线程的Future模式。 Future模式,就是当A线程需要B线程的处理结果,启动B线程,然后A线程继续往 ...
分类:
编程语言 时间:
2017-04-23 20:17:22
阅读次数:
161
在之前一篇博客中介绍了Future设计模式的设计思想以及具体实现,今天我们来讲一下使用JDK原生的包如何实现。 JDK内置的Future主要使用到了Callable接口和FutureTask类。 Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都 ...
分类:
编程语言 时间:
2017-04-01 23:47:56
阅读次数:
268