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

定制网站建设创意百度搜索引擎竞价排名

定制网站建设创意,百度搜索引擎竞价排名,家装十大品牌排行榜,ui设计师证书有用吗假设你有一个APP#xff0c;主要用于查询航班信息#xff0c;你的APP是没有这些实时数据的#xff0c;当用户发起查询请求时#xff0c;你需要到各大航空公司的接口获取信息#xff0c;最后统一整理加工返回到APP客户端。当然JDK自带了很多高级工具#xff0c;比如CountD…假设你有一个APP主要用于查询航班信息你的APP是没有这些实时数据的当用户发起查询请求时你需要到各大航空公司的接口获取信息最后统一整理加工返回到APP客户端。当然JDK自带了很多高级工具比如CountDownLatch和CyclicBarrier等都可以完成类似的功能但是仅就我们目前所学的知识使用join方法即可完成下面的功能。 该例子是典型的串行任务局部并行化处理用户在APP客户端输入出发地“北京”和目的地“上海”服务器接收到这个请求之后先来验证用户的信息然后到各大航空公司的接口查询信息最后经过整理加工返回给客户端每一个航空公司的接口不会都一样获取的数据格式也不一样查询的速度也存在着差异如果再跟航空公司进行串行化交互逐个地查询很明显客户端需要等待很长的时间这样的话用户体验就会非常差。如果我们将每一个航空公司的查询都交给一个线程去工作然后在它们结束工作之后统一对数据进行整理这样就可以极大地节约时间从而提高用户体验效果。 // 面相接口编程,定义一个查询接口FightQuery public interface FightQuery {ListString getRes(); }---------------------------------------------------------------------------------------- import java.util.ArrayList; import java.util.List; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit;// 查询Fight的task其实就是一个线程的子类主要用于到各大航空公司获取数据 public class FightQueryTask extends Thread implements FightQuery {private final String origin;private final String destination;private final ListString flightMsgs new ArrayList();/**** param airline 航空公司* param origin 始发站* param destination 目的地*/public FightQueryTask(String airline, String origin, String destination) {super([ airline ]); // 学到了这里居然是给线程起名字this.origin origin;this.destination destination;}Overridepublic void run() {System.out.println(Thread.currentThread().getName() Query from origin to destination);// 模拟业务逻辑处理int randomVal ThreadLocalRandom.current().nextInt(10);shortSleep(randomVal);flightMsgs.add(getName() - randomVal);System.out.println(getName() query done);}Overridepublic ListString getRes() {return this.flightMsgs;}private static void shortSleep(long time) {try {TimeUnit.SECONDS.sleep(time);} catch (InterruptedException e) {e.printStackTrace();}} } ---------------------------------------------------------------------------------------- public class FightQueryMain {public static void main(String[] args) {// 实现一下从SH上海到北京BJ的航班查询ListString results flightSearch(SH, BJ);System.out.println(result);results.forEach(System.out::println);}private static ListString flightSearch(String original, String dest) {//①合作的各大航空公司ListString fightCompanies Arrays.asList(CSA, CEA, HNA);//②创建查询航班信息的线程列表ListFightQueryTask queryTasks fightCompanies.stream().map(fightCompany - new FightQueryTask(fightCompany, original, dest)).toList();//③分别启动这几个线程queryTasks.forEach(Thread::start);//④分别调用每一个线程的join方法阻塞当前线程queryTasks.forEach(t - {try {t.join();} catch (InterruptedException e) {throw new RuntimeException(e);}});//⑤当前线程会阻塞住,直到获取每一个查询线程的结果return queryTasks.stream().map(FightQuery::getRes).flatMap(Collection::stream).toList();} }[CSA]Query from SH to BJ [HNA]Query from SH to BJ [CEA]Query from SH to BJ [HNA]query done [CEA]query done [CSA]query done result [CSA]-5 [CEA]-3 [HNA]-0-----------------------------------------------------------------------------读书笔记摘自书名Java高并发编程详解多线程与架构设计 作者汪文君
http://www.yutouwan.com/news/355518/

相关文章:

  • 如何把自己做的网站网络运维服务方案
  • 世界上做的最好的前端网站关于做美食的网站
  • 各大网站提交入口广西住房和城乡建设部网站
  • 建设集团招工信息网站极端页面 装修wordpress 主题
  • 国外网站html5从上到下连续变动古镇网站建设
  • 建设京东类的网站需要什么流程产品创意设计作品
  • 网站改版 降权增城电子商务网站建设
  • 旅游网站开发开题报告网站开发形式有哪些
  • 网站建设设计设计.net网站做优化
  • 关于网站排名优化需要怎么做重庆建设工程人力资源官网
  • 一般网站的宽度是多少拼多多网站怎么建设的
  • 深圳网站制作排行榜用ps做企业网站分辨率是多少
  • 网站开发中制作视频播放器工信部网站报备
  • 建设部网站设计资质查询莱芜网站建设价格低
  • wordpress搭建外贸网站wordpress emlog
  • 河北专业网站建设网站建设域名服务器
  • 手机网站轮播图凡科商城官网旗舰店
  • 网站建设软件的英文做器材的网站
  • 枝江企业网站石岩附近做网站公司
  • 织梦做企业网站教程移动网站建设书
  • 一起做业网站登录国内商务网络公司排名
  • 网站开发体会范文商城网站 html模板
  • 佛山企业网站建设wordpress主题 博客
  • 世界杯视频直播网站推荐网络营销方法案例
  • 怎么做培训班网站wentommy wordpress
  • 如何在网站开发国外大客户网站开发公司起名
  • 月坛网站建设公司app和微网站的区别是什么
  • 海外网站推广方案海南营销网站建设
  • 怎么利用代码做网站写作网站六大神书
  • 设计网站物理结构怎么做wordpress标签修改