测试并发应用(二)监控Phaser类
2023-09-14 08:56:51 时间
声明:本文是《 Java 7 Concurrency Cookbook 》的第八章, 作者: Javier Fernández González 译者:郑玉婷
监控Phaser类Java 并发 API 提供的其中一个最复杂且强大的功能是使用 Phaser 类来执行同步phased任务。当有些任务可以分成步骤执行时,此机制是很有用的。Phaser类提供的同步线程机制是在每个步骤的末端, 所以全部的线程都完成第一步后,才能开始执行第二步。
在这个指南,你将学习如何从Phaser类获取其状态信息。
准备
指南中的例子是使用Eclipse IDE 来实现的。如果你使用Eclipse 或者其他的IDE,例如NetBeans, 打开并创建一个新的java项目。
怎么做呢…
按照这些步骤来实现下面的例子:
//6. 写信息到操控台表明阶段一开始,把线程放入休眠几秒,使用time属性来表明,再写信息到操控台表明阶段一结束,并使用 phaser 属性的 arriveAndAwaitAdvance() 方法来与剩下的任务同步。
//7. 为第二和第三阶段重复第一阶段的行为。在第三阶段的末端使用 arriveAndDeregister()方法代替 arriveAndAwaitAdvance() 方法。
//12. 写关于 registered parties 的信息,phaser的phase,到达的parties, 和未到达的parties 的信息。
System.out.printf("Main: Phaser: Registered Parties:%d\n",phaser.getRegisteredParties());
System.out.printf("Main: Phaser: Unarrived Parties:%d\n",phaser.getUnarrivedParties());
它是如何工作的…
在这个指南,我们在 Task 类实现了 phased 任务。此 phased 任务有3个phases,并使用Phaser接口来与其他Task对象同步。当这些任务正在执行他们的phases时候,主类运行3个任务并打印关于phaser对象的状态信息到操控台。 我们使用以下的方法来获取phaser对象的状态:
getPhase():此方法返回phaser 任务的 actual phase getRegisteredParties(): 此方法返回使用phaser对象作为同步机制的任务数 getArrivedParties(): 此方法返回已经到达actual phase末端的任务数 getUnarrivedParties(): 此方法返回还没到达actual phase末端的任务数以下的裁图展示了项目的部分输出:
参见
Java多线程、使用多线程的优点、线程的创建和使用、Thread类、创建线程的两种方式继承Thread类、实现Runnable接口、Thread类的有关方法、线程的调度、无效的源发行版、线程的分类 Java多线程、使用多线程的优点、线程的创建和使用、Thread类、创建线程的两种方式继承Thread类、实现Runnable接口、Thread类的有关方法、线程的调度、无效的源发行版、线程的分类
【高并发】通过ThreadPoolExecutor类的源码深度解析线程池执行任务的核心流程 ThreadPoolExecutor类中存在一个workers工作线程集合,用户可以向线程池中添加需要执行的任务,workers集合中的工作线程可以直接执行任务,或者从任务队列中获取任务后执行。ThreadPoolExecutor类中提供了整个线程池从创建到执行任务,再到消亡的整个流程方法。本文,就结合ThreadPoolExecutor类的源码深度分析线程池执行任务的整体流程。
ali清英 方腾飞,花名清英,英文名kiral,并发编程网创始人,支付宝技术专家,《Java并发编程的艺术》作者。
相关文章
- Android 性能测试实践(二) 实时监控工具
- 性能测试之nmon对linux服务器的监控
- 性能优化与测试:系统监控、应用监控的思路
- SQL Server 监控统计阻塞脚本信息
- JavaScript 错误监控Fundebug
- Java监控工具介绍,VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,Java微基准测试
- 性能测试:监控mysql数据库
- 性能测试:监控web服务器--Tomcat
- Centos 7.6搭建LAMP,部署zabbix监控环境
- 基于EasyNVR实现RTSP/Onvif监控摄像头Web无插件化直播监控
- ML:MLOps系列讲解之《MLOps原则—迭代增量过程/自动化/持续部署/版本控制/实验跟踪/测试/监控/“ML成绩”系统/可再现性/松散耦合架构(模块化)/基于ML的软件交付指标等》解读
- 软件外包项目管理7 - 项目监控
- 基于电商模式的性能测试(3) —— 以Docker+Jmeter+InfluxDB+Grafana的形式搭建性能监控平台
- Linux 各个子系统以及监控、测试、优化这些子系统所用到的工具
- python glances来监控linux服务器CPU 内存 IO使用
- Beego进程内监控
- 监控服务器配置(一)-----Prometheus安装配置
- Spring Cloud Alibaba-Sentinel-使用熔断器仪表盘监控
- 利用zabbix api批量添加数百台监控主机
- Zabbix-SNMP协议监控Windows主机
- open-falcon 安装 gpu-mon 显卡监控