一个测试任务并发执行时间的方法
2017-04-16 17:53
323 查看
import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executor; /** * Created by xuyizhen on 2017/4/16. */ public class Util { /** * 测试任务task在指定的线程池execurtor中的并发度与性能的关系 * 注意:线程池中的线程数必须不小于并发度,否则将导致线程饥饿死锁 * * @param executor * @param concurrency * @param task * @return */ public static long timeTest(Executor executor, int concurrency, final Runnable task) throws InterruptedException { final CountDownLatch allReady = new CountDownLatch(concurrency); final CountDownLatch start = new CountDownLatch(1); final CountDownLatch allOver = new CountDownLatch(concurrency); for (int i = 0; i < concurrency; i++) { executor.execute(new Runnable() { public void run() { allReady.countDown(); try { start.await(); task.run(); } catch (InterruptedException e) { e.printStackTrace(); Thread.currentThread().interrupt();//使该断言能被Executor感知到 } finally { allOver.countDown(); } } }); } allReady.await(); long startTime = System.nanoTime(); start.countDown(); allOver.await(); long endTime = System.nanoTime(); return endTime - startTime; //对于这种测试时间间隔的定时,要使用nanoTime而非currentTimeMills。因为前者更加准确并且不受实时时钟的影响。 } }
相关文章推荐
- 多线程线程池控制一个方法的并发量 限制只有5个线程执行任务
- 测试timeTask定时执行任务线程,修改系统时间测试的技巧
- iOS获取一个方法的执行时间【转】
- java 计算一个方法的返回执行时间
- Golang记录、计算函数执行耗时、运行时间的一个简单方法
- 自己写的一个自动化测试任务执行工具(模板)
- 一个简单的任务执行时间监视器 StopWatch
- 测试一个方法的运行时间
- 介绍一个计算函数执行时间的简单方法!
- 在android中每隔一段时间执行某一个任务的方法
- C#测试代码、函数、方法执行时间,方便进行系统性能评估
- Implementing a timeout on a function,实现对一个方法执行时间进行限制
- 关于java读文件计算一个方法执行时间的程序的学习
- 一定间隔时间下重复执行一个函数的几个方法
- 测试一段程序代码执行时间的方法
- iOS获取一个方法的执行时间
- 限制某方法执行时间的一个解决方案和实现
- SQL测试执行sql时间的方法
- performSelector调度一个方法在以后某个时间执行
- Tomcat启动完成后再执行一个指定的方法 - 不影响Tomcat的启动时间