Future模式

Future 模式有点类似于商品订单。比如在网购物时,当看重某一件商品时,就可以提交订单,当订单处理完成后,在家里等待商品送货上门即可。或者说更形象的我们发送Ajax请求的时候,页面是异步的进行后台处理,用户无须一直等待请求的结果,可以继续浏览活操作其他内容。

  下面同样看一段demo,这段demo的代码的类比较多,为了看着舒服,采用截图的方式:

先看一下主函数:

主函数里面没什么东西,就是new了一个FutureClient对象,然后调用这个对象的request方法:

在这个方法中,先返回一个空的FutureData();然后在这个方法中,开一个新的线程去执行真实数据的封装,先看一下这个对象:RealData

继承自一个Data接口:

这个接口里面就一个抽象方法:

现在在看回去RealData这个类,这个类就是一个实际的数据操作类,数据操作完,把数据放入result中,

翻到前面的开了一个新的线程的那段代码,在新的线程里面,还调用了FutureData对象的setRealData(realData),下面看一下这个类:

这个类,巧妙的使用了配合sync使用的notify()和wait()方法,在数据处理完之前,getRequest方法处于阻塞的状态,等待真实对象数据装载完毕,唤醒等待的线程,从而传回真实对象。

原文地址:https://www.cnblogs.com/shmilyToHu/p/6413317.html