Java Future模式实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java Future模式实现相关的知识,希望对你有一定的参考价值。

Java Future模式简介

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


代码实现与分析


技术分享

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


技术分享


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


技术分享


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

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


技术分享


技术分享


运行结果验证:


技术分享




本文出自 “学海无涯 心境无限” 博客,请务必保留此出处http://zhangfengzhe.blog.51cto.com/8855103/1879036

以上是关于Java Future模式实现的主要内容,如果未能解决你的问题,请参考以下文章

转多线程设计模式 - Future模式之JAVA原生实现

Java并发多线程编程——Future设计模式实现的示例

Java中的Future模式原理自定义实现

Java深入学习:Future模式

Java程序执行超时——Future接口介绍

Java是如何实现Future模式的?万字详解!