一、需求和如何实现
需求:需要使用Java代码编写性能测试程序针对单独的算法进行性能测试
想法:通过CyclicBarrier+Executors+Runnable结合,实现多线程下的算法性能测试
实现方式如下:
CyclicBarrier+线程池的调用方式
1、定义一个 Runnable接口的实现类EncTask类(CyclicBarrier对象构造方法),重写 run 方法,实现自己的业务逻辑,在run方法中调用barrier.await()
2、主类SDKTest的Main方法通过线程数执行“任务实现类对象”的任务
2.1、创建1个CyclicBarrier对象
2.2、创建一个拥有固定线程数的线程池对象
2.3、通过 ExecutorService 对象的 execute 方法将任务(创建新的任务对象,传参CyclicBarrier对象给任务)添加到线程去执行。
二、示例
1、任务实现类:EncTask类
//等待线程都到达栅栏,直到最后一个线程到达时,栅栏才会开门
barrier.await();
for (int i=0;i<loopNum;++i) {
// 加密方法调用
String cipherData = CipherSuiteUtils.encrypt(plainData, algorithm, keyId, metadata, iv);
}