Java Future模式实现

Java Future模式简介

Future模式是Java多线程常用的模式,而且JDK也内置对Future模式的支持,比如在java.util.concurrent包下的FutureTask类。其核心思想在于:发出请求后,可以立即返回对象,但是这个对象实际上是个假对象,并不可立即使用,但是我们可以在干点别的事情后,就可以使用这个假对象获取结果了。这是为什么呢?因为在返回假对象的时候,偷偷的开启了一个线程去请求真正的结果数据。那么下面,我们来模拟实现下Future模式。

代码实现与分析

Java Future模式实现

主流程是:客户端类发出请求返回,做一些其他工作后,在获取请求的结果数据。

Java Future模式实现

通过上图,已经清晰的看到,在获取数据时,立即返回,同时开启了一个线程。

Java Future模式实现

这里需要特别注意的是使用到了wait/notify,那么为什么使用它们呢?

既然我们在请求后立即返回了一个“假对象”,如果立即调用“假对象”的方法获取结果数据,该怎么办呢?我们希望在偷偷开启的线程任务结束后,“假对象”才可以调用方法返回结果数据。因此,利用wait先阻塞住“假对象”的结果返回,当线程完成了结果数据的请求后notify通知下“假对象”可以提供结果数据了。

Java Future模式实现

Java Future模式实现

运行结果验证:

Java Future模式实现

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4c141fd32a77cae486869c3831cd2573.html