(六)Future模式

一、什么是Future模型

常见的多线程设计模式有:单例模式、不变模式、生产者-消费者模式、Future模式;而这里介绍Future模式,它的核心思想就是异步调用当我们需要调用一个函数,但是这个函数执行很慢,如果我们不需要马上知道结果,我们可以立即返回,让它在后台慢慢处理这个请求,对于调用者来说,可以先处理一些其他任务,这个就充分利用等待时间,在真正需要数据场合再去尝试获取需要的数据。 

(六)Future模式_第1张图片

二、Future模式的主要角色

参与者             作用

Main                启动系统,调用Client发出请求

Client              返回Data对象,理解返回FutureData,并开启ClientThread线程装配RealData

Data                返回数据的接口

FutureData      Future数据,构造很快,但是是一个虚拟的数据,需要装配RealData

RealData         真实数据,构造比较慢

(六)Future模式_第2张图片

三、Future模式的简单实现 

实现中有一个核心接口就是Data,这是客户端希望获取的数据,这个Data接口有两个重要的实现,分别是RealData,也就是真实数据,这就是我们最终需要获取的信息,还有一个FutureData,它用来提取RealData的一个“订单”因此FutureData可以立即获得

3.1Data接口

3.2实现类FutureData

这个是Future模式的关键,实际上是真实数据RealData的代理,封装了获取RealData的等待过程

(六)Future模式_第3张图片

FutureData实现了一个快速返回的RealData包装,所以它只是一个包装,没有真实数据,在里面的getResult()方法如果实际数据没有准备好就等待,直到RealData准备好并注入FutureData才返回数据

3.3实现类RealData

(六)Future模式_第4张图片

3.4Client

在客户端程序,创建获取FutureData,并开启构造RealData的线程,立即返回FutureData

(六)Future模式_第5张图片

3.5主函数

负责调用Client发起请求 ,并消费返回的数据

(六)Future模式_第6张图片
(六)Future模式_第7张图片

你可能感兴趣的:((六)Future模式)