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

网站设计 app开发工程平台网

网站设计 app开发,工程平台网,京东网站是自己做的吗,青岛需要做网站的公司有哪些Phaser是一个相对较新且功能强大的同步原语#xff0c;它于Java 7中引入#xff0c;用于协调并行任务的执行。与CyclicBarrier和CountDownLatch等传统的同步工具相比#xff0c;Phaser提供了更灵活和更高级的功能#xff0c;特别是在处理动态和可变的并行任务集合时。 1.P…Phaser是一个相对较新且功能强大的同步原语它于Java 7中引入用于协调并行任务的执行。与CyclicBarrier和CountDownLatch等传统的同步工具相比Phaser提供了更灵活和更高级的功能特别是在处理动态和可变的并行任务集合时。 1.Phaser基本概念 Phaser是一个可重用的同步屏障它允许一组线程互相等待直到所有线程都到达某个屏障barrier point为止。但与CyclicBarrier不同的是Phaser支持动态调整参与的线程数并且允许线程在一个phaser阶段完成后注册参与下一个阶段。 每个Phaser对象都有一个整数表示的阶段phase计数每个阶段可以看作是一组并行任务的一个协调点。当所有注册的线程通过调用arrive()或arriveAndAwaitAdvance()方法到达一个阶段时该阶段就会结束所有等待的线程将被释放以继续执行同时阶段计数会增加。 2.构造函数和关键方法 构造函数 Phaser() 创建一个新的Phaser对象其初始阶段计数为0且没有注册的参与者。这通常用于层次结构的Phaser其中子Phaser会动态地注册到父Phaser。Phaser(int parties) 创建一个新的Phaser对象并初始化给定数量的参与者。这里的parties表示在Phaser更改阶段之前必须通过调用arriveAndAwaitAdvance()或arrive()方法的线程数。Phaser(Phaser parent) 创建一个新的Phaser对象并将其关联到给定的父Phaser。子Phaser的终止会影响到父Phaser的终止但反之则不然。此构造函数创建的Phaser初始时没有注册的参与者。Phaser(Phaser parent, int parties) 创建一个新的Phaser对象它既有父Phaser又有初始注册的参与者数量。这个构造函数结合了前两个构造函数的功能。 关键方法 arrive()表示当前线程已经完成了当前阶段的工作并减少到达该阶段的线程数。arriveAndAwaitAdvance()与arrive()类似但它还会使当前线程等待其他线程到达此阶段然后一起进入下一个阶段。awaitAdvance(int phase)等待直到Phaser的当前阶段改变为给定的phase或者当前线程被中断。register()在当前阶段增加一个未到达的线程。这允许动态地添加新的参与者。bulkRegister(int parties)一次性注册多个未到达的线程。 3.Phaser的优势 灵活性与CyclicBarrier相比Phaser允许在运行时动态地添加或移除参与者。多阶段支持Phaser支持多个协调点而不仅仅是单个屏障。可重用性一旦所有线程到达一个阶段Phaser可以自动地或手动地重置为下一个阶段而不需要重新创建。 4.使用Phaser实现并行计算 import java.util.concurrent.Phaser; public class PhaserExample { public static void main(String[] args) { final int numberOfTasks 10; final Phaser phaser new Phaser(numberOfTasks); // 创建一个Phaser初始参与者数量为10 for (int i 0; i numberOfTasks; i) { final int taskID i; new Thread(() - { System.out.println(Task taskID is starting.); // 模拟计算工作 try { Thread.sleep((long) (Math.random() * 1000)); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Task taskID is finishing.); phaser.arrive(); // 表示任务完成 }).start(); } // 等待所有任务完成 phaser.awaitAdvance(phaser.getPhase()); System.out.println(All tasks are complete.); } }运行结果 Task 1 is starting. Task 2 is starting. Task 0 is starting. Task 4 is starting. Task 3 is starting. Task 5 is starting. Task 6 is starting. Task 7 is starting. Task 8 is starting. Task 9 is starting. Task 1 is finishing. Task 4 is finishing. Task 2 is finishing. Task 8 is finishing. Task 6 is finishing. Task 3 is finishing. Task 7 is finishing. Task 9 is finishing. Task 0 is finishing. Task 5 is finishing. All tasks are complete.在这个例子中我们创建了一个包含10个任务的Phaser每个任务都在它自己的线程中运行。当每个任务完成时它会通过调用arrive()方法通知Phaser。主线程通过调用awaitAdvance()方法等待所有任务完成。 注意虽然这个例子使用了固定数量的任务但Phaser的真正优势在于能够处理动态添加或移除的并行任务。通过调用register()和arrive()方法可以在任何时候增加新的参与者到当前的阶段中。 Phaser是Java并发工具包中一个强大而灵活的组件它提供了协调并行任务执行的高级机制。在处理复杂的多线程问题时考虑使用Phaser可以使代码更加简洁且易于管理。 5.总结 Phaser是Java并发工具包中一个强大而灵活的组件它提供了协调并行任务执行的高级机制。在处理复杂的多线程问题时考虑使用Phaser可以使代码更加简洁且易于管理
http://www.w-s-a.com/news/744920/

相关文章:

  • thinkphp大型网站开发市场调研公司招聘
  • 天宁区建设局网站七冶建设集团网站 江苏
  • 越南网站 后缀湘潭新思维网站
  • 环球旅行社网站建设规划书网钛cms做的网站
  • 软件资源网站wordpress不能识别语言
  • 东坑仿做网站西安私人网站
  • 公司想做个网站怎么办如何搭建视频网站
  • .net网站架设凯里网站建设哪家好
  • seo网站建站建站国外百元服务器
  • 家具网站开发设计论文企业网站里面的qq咨询怎么做
  • 网站视频提取软件app淘宝店购买网站
  • 站长之家域名解析做百度推广网站咱们做
  • 行业 网站 方案莱州网站建设公司电话
  • 丹东谁做微网站威海网络科技有限公司
  • 寻找网站建设_网站外包自助打印微信小程序免费制作平台
  • 台式机网站建设vk社交网站做婚介
  • 创建网站得花多少钱网站建设的技术路线
  • 图书馆网站建设汇报免费编程软件哪个好用
  • 手机搭建网站工具网站搜索引擎优化的基本内容
  • 网站快速排名二手交易网站开发技术路线
  • 官方网站开发公司施工企业会计王玉红课后答案
  • 网站建设能用手机制作吗网站建设所需物资
  • 阜阳做网站的公司阳江招聘网最新消息
  • 织梦可以做哪些类型型网站wordpress 融资
  • 建设银行手机银行官方网站下载安装腾讯企点账户中心
  • 品牌设计网站有哪些商务网站建设平台
  • 新增网站备案时间什么是软件外包产业
  • 张家界做网站买了网站模版怎么做
  • 六安品牌网站建设怎么样知名商城网站建设报价
  • 怎么上传自己做的网站杭州网站建设公司平台