当前位置: 首页 > news >正文

java 聚合服务_远程服务接口聚合带来的性能提升

package接口聚合;importjava.util.concurrent.Callable;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurrent.FutureTask;

public classdemo {public static ExecutorService executorService = Executors.newFixedThreadPool(5);public static voidmain(String[] args) {

demo d= newdemo();

System.out.println(d.getABInfoOnWebOld());

System.out.println(d.getABInfoOnWebNew());

}//模拟WEB接口 ---接口串行

publicString getABInfoOnWebOld(){long before =System.currentTimeMillis();

String s=RemoteService.serviceA();

String s1=RemoteService.serviceB();long cost = System.currentTimeMillis() -before;return s+":"+s1+"cost :"+cost;

}//模拟WEB接口 ---接口集合

publicString getABInfoOnWebNew(){long before =System.currentTimeMillis();

Callable taskA = new Callable() {public String call() throwsException {returnRemoteService.serviceA();

}

};

Callable taskB = new Callable() {public String call() throwsException {returnRemoteService.serviceB();

}

};

FutureTask futureTaskA= newFutureTask(taskA);

FutureTask futureTaskB= newFutureTask(taskB);

executorService.submit(futureTaskA);

executorService.submit(futureTaskB);

String result= "";try{

result= futureTaskA.get() +":"+futureTaskB.get();long cost = System.currentTimeMillis() -before;

result= result+"cost:"+cost;

}catch(Exception e) {

e.printStackTrace();

}finally{

executorService.shutdown();

}returnresult;

}//模拟远程服务

static classRemoteService{public staticString serviceA(){try{

Thread.sleep(2000L);

}catch(InterruptedException e) {

e.printStackTrace();

}return "A";

}public staticString serviceB(){try{

Thread.sleep(3000L);

}catch(InterruptedException e) {

e.printStackTrace();

}return "B";

}

}

}

相关文章:

  • java编写客户_java编写服务器和客户端.docx
  • ORA-03113错误分析
  • 一个带年月日时分秒选择的js脚本
  • java发送苹果消息慢_使用javapns向苹果apns发送消息成功,手机设备有时收不到推送信息...
  • java 1.6 ubuntu_Ubuntu16.04安装java6(jdk 1.6)
  • 自适应反走样(Adaptive Anti-aliasing)
  • java emptyarray_Java ArrayDeque isEmpty()方法
  • GCCfor Win32 开发环境介绍(6)
  • php 禁止直接访问目录_php – 防止网站某些目录被直接访问的最佳方法是什么?...
  • Delphi关于改进AES算法的加解密文件功能
  • php博客系统答辩ppt,个人博客系统设计与实现答辩PPT.ppt
  • 还是自适应反走样
  • php判断空字符串,PHP判断变量是否为空
  • 免费的BPEL设计器(Free BPEL designers)
  • php写入文本检查重复,php去除txt文本重复数据-PHP源码
  • 《深入 React 技术栈》
  • angular2 简述
  • codis proxy处理流程
  • gulp 教程
  • IDEA 插件开发入门教程
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • js如何打印object对象
  • js学习笔记
  • node.js
  • 关于 Cirru Editor 存储格式
  • 聊聊redis的数据结构的应用
  • 实战|智能家居行业移动应用性能分析
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • hi-nginx-1.3.4编译安装
  • Prometheus VS InfluxDB
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (十三)Maven插件解析运行机制
  • (十一)图像的罗伯特梯度锐化
  • (算法二)滑动窗口
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转)负载均衡,回话保持,cookie
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .java 9 找不到符号_java找不到符号
  • .NET 8.0 发布到 IIS
  • .Net core 6.0 升8.0
  • .Net CoreRabbitMQ消息存储可靠机制
  • .net 怎么循环得到数组里的值_关于js数组
  • .net6使用Sejil可视化日志
  • .Net6使用WebSocket与前端进行通信
  • .NET程序员迈向卓越的必由之路
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .so文件(linux系统)
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [AutoSar NVM] 存储架构
  • [C#C++]类CLASS