创建多线程和线程池

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit; //开启的线程数
int threadSize = 100;
//创建线程池
ExecutorService executorService = Executors.newFixedThreadPool(threadSize);
//开始时间
long start = System.currentTimeMillis();
//让线程池中的每一个线程都开始工作
for (int j = 0; j < threadSize; j++) {
//执行线程
executorService.execute(new TestPerformance(threadSize));
}
//等线程全部执行完后关闭线程池
executorService.shutdown();
executorService.awaitTermination(Integer.MAX_VALUE, TimeUnit.DAYS);
//结束时间
long end = System.currentTimeMillis(); System.out.println("测试次数:" + TestPerformance.atomicInteger.get());
System.out.println("用时:" + (end - start));
System.out.println("速度:" + TestPerformance.atomicInteger.get() * 1000 / (end - start) + "次/秒");

具体逻辑

package com.test.performance;

import java.util.concurrent.atomic.AtomicInteger;

/**
* 测试性能.
*/
public class TestPerformance implements Runnable { //每个线程的执行次数
private int size; //记录多线程的总执行次数,保证高并发下的原子性
public static AtomicInteger atomicInteger = new AtomicInteger(0); public TestPerformance(int size) {
this.size = size;
} @Override
public void run() { int count = 0;
while (count < size) {
count++; atomicInteger.getAndIncrement(); ///////////////
//在此写入需要测试性能的代码块
/////////////// System.out.println("线程ID与对应的执行次数:" + Thread.currentThread().getId() + "--->" + count);
}
}
}

文章转载至:https://blog.csdn.net/weixin_43192102/article/details/106195948

最新文章

  1. PHP 高级编程(3/5) - 使用SPL(标准PHP库)实现观察者模式
  2. delphi 实现最小化系统托盘
  3. 终于遇到app不兼容,你遇到了么?
  4. Grunt入门教程
  5. MVVM架构~knockoutjs系列之正则表达式使规则更灵活
  6. GO语言练习:实现最简单的http helloword 服务器
  7. swift2.0单例
  8. oracle sqlloader 用法
  9. 选择排序算法Java与Python实现
  10. C# 对动态编辑的一些学习笔记
  11. js获取对象、数组的实际长度,元素实际个数
  12. TRIGGERS_监测系统_多表视图触发器—向原始数据报表中插入数据
  13. 特殊字符 js处理
  14. Android 开发之开发插件使用:Eclipse 插件 SQLiteManger eclipse中查看数据内容--翻译
  15. 原生JS和JQuery代码编写窗口捕捉函数和页面视觉差效果(scroll()、offsetTop、滚动监听的妙用)
  16. inode 详解
  17. Android查缺补漏(线程篇)-- IntentService的源码浅析
  18. 【差分+前缀和】BZOJ1637: [Usaco2007 Mar]Balanced Lineup
  19. java面试题复习(八)
  20. Spring MVC 之请求参数和路径变量

热门文章

  1. 在Windows上使用 Python 安装+ win10启用长路径
  2. mysql基础之mariadb galera集群(多主)
  3. CentOS 7 网络配置详解
  4. python的数组
  5. idea配置javaweb项目(最新版)
  6. 浅谈:Redis持久化机制(一)RDB篇
  7. js的基本数据类型和typeof的关系
  8. BERT模型的OneFlow实现
  9. 微信架构 &amp; 支付架构(上)
  10. HiCar人-车-家全场景智慧互联