Promise模式是一种异步编程模式,即我们可以先开始一个任务,拿到这个任务的凭据而并不需要立即得到这个任务的执行结果才继续往下执行,我们拿着这个凭证可以在之后任何需要的时候去兑换结果。这篇文章主要介绍一种基于JAVA的Promise模式实现并结合一些例子。

原始实现

为了能够让大家对这个模式有个印象,我举个简单点的例子,假如我们正在做百度百科这个页面,我们需要给前端提供一个服务(下面的代码我们将结果打印出来来模拟),可以根据id获取百科条目的内容,具体的例子是我们想要获取某个明星的百度百科信息。而这个明星的信息有两个相关内容可能需要调用别人的服务来获取,一个是获取明星相关的人物信息;另一个是获取这个明星相关的新闻。我们假设这两个服务分别位于不同的业务部门,而且由于业务的复杂性,服务比较慢,我用下面的代码来表示:

/**

* @author float.lu

*/

public class OldLongCallExample {

public static void main (String ...s) {

long start = System.nanoTime();

//280ms

String result1 = getRelatedRoles();

//250ms

String result2 = getRelatedNews();

System.out.println("Result:" + result1 + result2);

System.out.println("take:" + TimeUnit.NANOSECONDS

java promise实现_基于JAVA的Promise模式实现相关推荐

  1. java path类_基于java Files类和Paths类的用法(详解)

    Java7中文件IO发生了很大的变化,专门引入了很多新的类: import java.nio.file.DirectoryStream; import java.nio.file.FileSystem ...

  2. java 实现违章_基于JAVA的车辆违章查询数据调用代码实例

    基于JAVA的车辆违章查询数据调用代码实例 代码描述:基于JA V A的车辆违章查询数据调用代码实例 相关平台:聚合数据 import java.io.BufferedReader; import j ...

  3. java 酒店系统_基于JAVA的酒店管理系统

    <基于JAVA的酒店管理系统>由会员分享,可在线阅读,更多相关<基于JAVA的酒店管理系统(31页珍藏版)>请在人人文库网上搜索. 1.酒店管理系统,专业: 姓名: 指导教师, ...

  4. java订单类_基于Java创建一个订单类代码实例

    这篇文章主要介绍了基于Java创建一个订单类代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需求描述 定义一个类,描述订单信息 订单id 订 ...

  5. java 雅思_基于JAVA的雅思考试管理系统的设计与实现(SSH,MySQL)(含录像)

    基于JAVA的雅思考试管理系统的设计与实现(SSH,MySQL)(含录像)(任务书,毕业论文12000字,程序代码,MySQL数据库) 本文分析了基于JAVA的雅思考试管理系统的设计与实现技术,结合实 ...

  6. java全文检索功能_基于Java的全文检索引擎简介

    Lucene是一个基于Java的全文索引工具包. 基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史 全文检索的实现:Luene全文索引和数据库索引的比较 中文切分词机制简介:基 ...

  7. java zip追加_基于Java向zip压缩包追加文件

    这篇文章主要介绍了基于Java向zip压缩包追加文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 有个需求,从某个接口下载的一个zip压缩包,往里 ...

  8. 五子棋java设计引言_基于JAVA的五子棋游戏系统设计与实现报告.doc

    PAGE \* MERGEFORMAT PAGE \* MERGEFORMAT I 基于JAVA的五子棋游戏系统设计与实现 专 业 电子信息工程 学 生 董永杰 指导教师 曾玉 摘要 PAGE \* ...

  9. java远控_基于java的远程控制 示例源码

    [实例简介]基于java的远程控制软件 [实例截图] 远程连接客户端如下: 服务端如下: [核心代码] package tcpudp; import java.awt.BorderLayout; im ...

最新文章

  1. k均值聚类图像分割matlab代码_用K均值聚类法为人类拍摄的首张黑洞照片进行分割...
  2. 软件seqtk的使用
  3. libssh2 和 libssh 比较
  4. 删除linux 软raid0,配置Linux软RAID0
  5. C++ 面向对象(四)—— 多态 (Polymorphism)
  6. python最基本的语句_Python的基本语句
  7. SpringBoot 跨域请求
  8. ASA下邮件发送经常失败
  9. 蛮牛精选七款Unity插件
  10. 计算机用户怎么去掉中文,电脑英文系统怎么设置回中文
  11. 【原】iphone6来了,我该做点什么(兼容iphone6的方法)
  12. win7便笺重启计算机后还有吗,Win7电脑关机后,记在便签小工具上的内容还在吗?...
  13. html选择地区代码,jQuery中国区域选择器插件
  14. cloudcompare断面提取
  15. 浏览器地址栏的组成部分
  16. ArcMAP实现矢量数据平移
  17. 手机android版本2.3.6可以安装哪个版本的音乐播放器,喜马拉雅fm老版本2.3.6下载...
  18. confluence 使用笔记
  19. Android 新增外设Service添加供app使用
  20. php是什么化学物,dmap是什么化学物质以及它的性质用途

热门文章

  1. 注意力机制的分类 | Soft Attention和Hard Attention
  2. 暴雪网易事件大讨论:Web3游戏未来发展趋势
  3. AGS 对象池和状态概要
  4. python网络图片下载---跟我一起爬王者农药皮肤吧
  5. 大坝平台结构——志豪未来科技有限公司
  6. java实现第二届蓝桥杯地铁换乘(C++)
  7. android开发查漏补缺图
  8. _stdcall _cdec区别
  9. Google官方网络框架Volley实战——QQ吉凶测试,南无阿弥陀佛!
  10. 快手签名算法php,2019 快手API签名算法