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

网站后端建设当当网网站的建设过程

网站后端建设,当当网网站的建设过程,wordpress的wp_list_cats,网站建设对企业发展的意义——CompletableFuture Future Future 接口#xff08;FutureTask 实现类#xff09; 定义了操作异步任务执行的一些方法#xff0c;如获取异步的执行结果、取消任务的执行、判断任务是否被取消、判断任务执行是否完毕例如#xff1a; 主线程让一个子线程去执行任务…——CompletableFuture Future Future 接口FutureTask 实现类 定义了操作异步任务执行的一些方法如获取异步的执行结果、取消任务的执行、判断任务是否被取消、判断任务执行是否完毕例如 主线程让一个子线程去执行任务子线程可能比较耗时启动子线程开始执行任务后主线程就去做其他事情了忙其他事情或者先执行完过了一会才去获取子任务的执行结果或变更的任务状态Future 接口可以为主线程开一个分支任务专门为主线程处理耗时和费力的复杂业务Future 是 Java5 新加的一个接口提供了一种异步并行计算的功能。如果主线程需要执行一个很耗时的计算任务就可以通过 Future 把这个任务放到异步线程中执行。主线程继续处理其他任务或者先行结束再通过 Future 获取计算结果异步多线程任务执行且返回有结果特点多线程、有返回、异步任务 优点 Future 线程池异步多线程任务配合能显著提高程序的执行效率 缺点 futureTask.get() 容易导致阻塞一般建议放在程序后面一旦调用非要等到结果才会离开不管你是否计算完成假如不愿意等待很长时间规定时间内自动离开futureTask.get(3, TimeUnit.SECENDS)isDone()轮询的方式会耗费无畏的CPU资源而且也不见得能及时地得到计算结果如果想要异步获取结果通常都会以轮询的方式获取结果尽量不要阻塞 问题 / 改进 简单的业务场景使用 Future 完全 OK通过轮询的方式去判断任务是否完成非常占 CPU 并且代码也不优雅假设业务需求想将多个异步任务的计算结果组合起来后一个异步任务的计算结果需要前一个异步任务的值将两个或多个异步计算合成一个异步计算这几个异步计算互相独立同时后面这个又依赖前一个处理的结果当 Future 集合中某个任务最快结束时返回第一名处理结果至此引出 CompletableFuture以声明式的方式优雅处理这些需求Future 能干的CompletableFuture 都能干 CompletableFuture 概念 为什么会出现 对于真正的异步处理我们希望是可以通过传入回调函数在Future结束时自动调用该函数这样就不用等待结果阻塞的方式和异步编程的设计理念互相违背而轮询的方式会耗费无畏的 CPU 资源CompletableFuture 提供了一种观察者模式类似的机制可以让任务执行完成后通知监听的一方 是什么 在 Java 8 中CompletableFuture 提供了非常强大的 Future 的扩展功能可以帮我们简化异步编程的复杂性并且提供了函数式编程的能力可以通过回调的方式处理计算结果也提供了转换和组合 CompletableFuture 的方法它可能代表一个明确完成的 Future也可能代表一个完成阶段CompletionStage它支持在计算完成以后触发一些函数或执行某些动作 实现 Future 和 CompletionStage 接口 CompletionStage 代表异步计算过程中的某一个阶段一个阶段完成以后可能会触发另一个阶段有些类似 Linux 系统的管道分隔符传参数一个阶段的计算执行可以是一个 FunctionConsumer 或者 Runnable一个阶段的执行可能是被单个阶段的完成触发也可能是由多个阶段一起触发 核心静态方法 runAsync 无返回值 runAsync(Runnable runnable)runAsync(Runnable runnable, Executor executor) supplyAsync 有返回值 supplyAsync(SupplierU supplier)supplyAsync(SupplierU supplier, Executor executor) 上述 Executor executor 参数说明 没有指定 Executor 的方法直接使用默认的 ForkJoinPool.commonPool()如果指定线程池则使用我们自定义或者特别指定的线程池执行异步代码 优点 异步任务结束时会自动回调某个对象的方法主线程设置好回调后不再关心异步任务的执行异步任务之间可以顺序执行异步任务出错时会自动回调某个对象的方法 get() 和 join() 方法区别 调用 join 方法时编译时不会报出检查时的异常调用 get 方法时编译时会报出检查时的异常 线程池说明 没有传入自定义线程池都用默认线程池 ForkJoinPool如果你执行第一个任务的时候传入了一个自定义线程池 调用 thenRun 方法执行第二个任务时则第二个任务和第一个任务是共用同一个线程池调用 thenRunAsync 执行第二个任务时则第一个任务使用的是你自己传入的线程池第二个任务使用的是 ForkJoinPool 线程池 有可能处理太快系统优化切换原则直接使用 main 线程处理 常用方法API 获得结果和触发计算 get() 调用时阻塞get(long timeout, TimeUnit unit) 超过时间不等待join() 不抛异常getNow(T valueIfAbsent) 提供默认值计算完成返回结果不阻塞complete(T vlaue)是否打断 get 方法立即返回括号值 对计算结果进行处理 thenApply计算结果存在依赖关系这两个线程串行化由于存在依赖关系当前步骤有异常就叫停handle计算结果存在依赖关系这两个线程串行化有异常也可以往下一步走根据带的异常参数可以进一步处理 对计算结果进行消费 thenRun任务 A 执行完执行 B并且 B 不需要 A 的结果thenAccept任务 A 执行完执行 BB 需要 A 的结果但是任务 B 无返回值thenApply任务 A 执行完执行 B B 需要 A 的结果同时任务 B 有返回值 对计算速度进行选用 applyToEither 对于两个线程相比较哪个比较快就用哪个 对计算结果进行合并 thenCombine两个 CompletionStage 任务都完成后最终能把两个任的结果一起交给 thenCombine 来处理先完成的等待另一个完成
http://www.hkea.cn/news/14521014/

相关文章:

  • 医院网站建设方案需要多少钱seo排名优化表格工具
  • 慧聪网怎样做网站友情链接浙江网站建设实验心得
  • 京东商城网站建设义乌网络科技有限公司
  • 企业宣传网站建设说明书一键搭建自己的影视网
  • 百度做一个网站怎么做呢长沙出名的网站设计推广
  • 黄石建设网站公司网站外部优化的4大重点
  • 做暧暧视频网站安全吗买东西的网站
  • 网站案例网站建设深圳建设集团网站
  • 广西南宁网站制作学历提升机构的套路
  • 专业制作门户型网站网上推广什么比较赚钱
  • 网站的策划方案免费建站的站点网站
  • 赤峰网站建设哪个服务好网站开发虚拟电话
  • 网站建设数据的保密性湘潭网站建设优选磐石网络
  • 网站图片动态换名网站广告推广公司
  • 越秀网站建设推广谷歌搜索引擎优化seo
  • 外贸选品网站营销策略是什么意思
  • 论述农产品电商网站建设摄影师常用的网站
  • 做运营必知网站企业文化简介网站怎么做
  • 上海网站开发招聘一个网站交互怎么做的
  • 网站建设引入谷歌地图网络科技公司是传销吗
  • 企业网站 seo怎么做营销qq
  • 哪个企业提供电子商务网站建设外包注册一个电商平台需要多少钱
  • 国外设计网站pinterest怎么打不开昌大建设集团是哪里的
  • 网站快照不更新常州迅捷网络
  • 网站做淘宝客排名会掉吗wordpress文章文件
  • 鄂州网站网站建设快速开发网页工具
  • 下列不属于网站建设规划济南网站建设v芯企优互联不错
  • iis6.1添加网站制作一个网站平台
  • 公司网站制作步骤流程图国外优秀购物网站
  • 四川和住房城乡建设厅网站建设银行网网站