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

那个做我女朋友的网站学校建设网站费用申请报告

那个做我女朋友的网站,学校建设网站费用申请报告,wordpress开发小程序,宜阳建站在实际项目开发过程中#xff0c;大部分程序的执行顺序都是按照代码编写的先后顺序#xff0c;依次从上往下挨个执行的#xff0c;但是对于统计或者批量操作数据时#xff0c;是否有更好的方案呢#xff1f;这时候就可以考虑使用多线程编程#xff0c;异步并行执行多个任…在实际项目开发过程中大部分程序的执行顺序都是按照代码编写的先后顺序依次从上往下挨个执行的但是对于统计或者批量操作数据时是否有更好的方案呢这时候就可以考虑使用多线程编程异步并行执行多个任务从而提升用户使用体验发挥多核cpu的性能。 更多关于CompletableFuture的说明请参看如下文章 Java多线程之CompletableFuture_java completablefuture-CSDN博客 Java中的CompletableFuture原理与用法_java_脚本之家 以下文案是基于数据统计方案去设计编写的希望可以对各位有所帮助。 一.CompletableFuture是什么 CompletableFuture是由Java8引入的用于异步编程异步通常意味着非阻塞运行任务单独的线程与主线程隔离。并且通过回调可以在主线程中得到异步任务的执行状态是否完成和异常等信息。通过这种方式编程主线程不会被阻塞不需要等到多个子线程执行完成它可以并行执行其他任务。使用这种并行编程方式可以极大的提高程序的执行和运行效率提升用户使用体验等。 与Future对比 CompletableFuture默认使用的是ForkJoinPool线程池CompletableFuture 是 Future API的扩展Future在实际使用过程中存在局限性如不支持异步任务的编排组合获取计算结果的get() 方法为阻塞调用CompletableFuture除了提供了更为好用和强大的 Future 特性之外还提供了函数式编程、异步任务编排组合等扩展功能。 二.如何创建CompletableFuture实例 1. supplyAsync() 通过该函数创建的CompletableFuture实例会异步执行当前传入的计算任务。在调用端则可以通过get或join获取最终计算结果。 /** * 有返回值的 * 如果不指定线程池默认的构造方法使用ForkJoinPool **/ ExecutorService executorService Executors.newFixedThreadPool(4); CompletableFutureListSysDept cfDeptList CompletableFuture.supplyAsync(() - {return remoteStationService.getAllStationInfo(0).getData();},executorService); ListSysDept join cfDeptList.join(); 2.runAsync() 与supplyAsync()不同的是runAsync()传入的任务要求是Runnable类型的所以没有返回值。因此runAsync适合创建不需要返回值的计算任务。 //无返回值 CompletableFuture cf CompletableFuture.runAsync(()-{getFireFightingData(params,resultAll);},fjp); 3.Future.get()和CompletableFuture.join()对比 这两个方法都是阻塞方法用于获取异步任务的结果。Future.get()方法在获取异步任务结果时更具灵活性因为它必须声明抛出异常且需要手动处理同时它会阻塞线程调用。CompletableFuture.join() 方法更适用于使用 ForkJoinPool 线程池执行任务的情况它更方便用于不会阻塞 ForkJoinPool 线程池中的线程中。 三.CompletableFuture使用 //仅展示部分关键代码 ForkJoinPool fjp new ForkJoinPool(8);System.out.println(默认使用的线程为: Thread.currentThread().getName());CompletableFuture cf1 CompletableFuture.runAsync(()-{System.out.println(cf1使用的线程为: Thread.currentThread().getName());//站数据ListStationDTO stationAllVoList staMapper.getAllStationVoList(null);MapString, StationDTO stationAllVoMap null;if(CollectionUtils.isNotEmpty(stationAllVoList)){stationAllVoMap stationAllVoList.stream().collect(Collectors.toMap(StationDTO::getStationName, Function.identity()));}else {stationAllVoMap new HashMap();}resultAll.put(stationAllVoMap,stationAllVoMap);},fjp);System.out.println(cf1使用完之后的线程为: Thread.currentThread().getName());CompletableFuture cf2 CompletableFuture.runAsync(()-{System.out.println(cf2使用的线程为: Thread.currentThread().getName());getSafetyCountData(params,resultAll);},fjp);CompletableFuture cf3 CompletableFuture.runAsync(()-{System.out.println(cf3使用的线程为: Thread.currentThread().getName());getRectifyRateData(params,resultAll);},fjp);CompletableFuture cf4 CompletableFuture.runAsync(()-{System.out.println(cf3使用的线程为: Thread.currentThread().getName());getAlarmARemindData(params,resultAll);},fjp);CompletableFuture.allOf(cf1,cf2,cf3,cf4).join();fjp.shutdown();需要注意的点 allOf()返回的CompletableFuture是多个任务都执行完成后才会执行只要有一个任务执行异常则返回的CompletableFuture执行get方法时会抛出异常如果都是正常执行则get返回null。anyOf()返回的CompletableFuture是多个任务只要其中一个执行完成就会执行其get返回的是已经执行完成的任务的执行结果如果该任务执行异常则抛出异常。 四. 模拟测试验证 经过测试 多个子线程执行并不会影响主线程的继续执行也不存在线程阻塞问题与设计效果保持一致非常值得借鉴学习。
http://www.pierceye.com/news/885331/

相关文章:

  • 网站的建设意义盐城网站建设找哪家好
  • 赤峰市网站建设年轻人免费在线看视频
  • 使用word做网站网络广告的特点有哪些?
  • 网站系统参数设置定制网站的制作流程
  • 做家教网站公司品牌vi设计升级
  • 唯品会网站建设建议浙江网站建设价格费用
  • 网站建设购买深圳有做网站的公司有哪些
  • 网站预算表怎么做网站域名续费怎么续费
  • 宁波建设网站公众号关注编辑网站教程
  • 怎样自己做刷赞网站开发软件需要多少成本
  • 为什么网站之有首页被收录广西两学一做网站
  • 制作网站需要的软件怎么向google提交网站
  • 济南网站的建设公司网站建设征求意见表
  • 小学校园网站建设简介打开网站弹出一张图片 怎么做
  • 做外贸没有网站需要注意什么条件做简历模板的网站都有哪些
  • 铜陵保障性住房和城乡建设网站舞钢市城乡建设局网站
  • 企业网站总承包建设模式关键步骤凡科论文送审平台
  • 石家庄学校网站建设在线定制签名
  • 新泰网站制作公司免费下载百度seo
  • 江苏海宏建设工程有限公司网站免费软件是怎么盈利的
  • 建设网站需要申请什么推广网站排名
  • 怎么看出网站是dede做的网页的响应式布局
  • 中国农村建设网站静安广州网站建设
  • 全国 做网站的企业wordpress+编辑模板
  • 网站开发需要的编程软件有哪些海门住房和城乡建设局网站
  • 南宁上林网站建设交换链接是什么
  • 什么网站做简历好api模式网站开发
  • 网站建设与管理专业好吗网络推广seo培训班
  • 常用网站架构辽宁建设工程信息网审计报告
  • 绿色大气网站模板坪山网站建设公司