IO型任务,线程池越大越好?
来源:互联网 发布:自动接听电话软件 编辑:程序博客网 时间:2024/06/02 07:12
网传 "CPU密集型任务,线程池size应为CPU数+1; IO密集型任务,线程池size应为CPU数/(1-阻塞系数)".
并且,类似的话也出现在<实战Java高并发程序设计> 这本书里.
但是,今天正好做到一个类似的东西,于是乎就测试了一下,很奇怪,结果恰恰相反.
1.环境:
1.1.jdk1.8
1.2.mysql5.6 (数据库位于本地Ubuntu16.04虚拟机中)
1.3.win10 64bit
2.笔记本配置:
.
3.测试数据库表及90万条样例数据:
4.主要程序代码
4.1.当线程池大小=CPU核心数
public static void main(String[] args) { final ConfigurableApplicationContext ctx = SpringApplication.run(Application.class, args); int cpuCount = Runtime.getRuntime().availableProcessors(); ExecutorService threadPool = Executors.newFixedThreadPool(cpuCount);//线程池大小=CPU核心数 long begin = System.nanoTime(); for (int i = 0; i < cpuCount * 2; i++) { threadPool.submit(new Runnable() { @Override public void run() { UserService userService = ctx.getBean(UserService.class); boolean login = userService.login("1", "2");// 查询语句: SELECT * FROM `user` ,单词查询耗时约4s } }); } threadPool.shutdown(); while (!threadPool.isTerminated()) { } System.out.println("总共耗时:" + BigDecimal.valueOf(System.nanoTime() - begin, 9)); }多次测试,总耗时在32s左右.
4.2.把线程池大小扩大一倍:
ExecutorService threadPool = Executors.newFixedThreadPool(cpuCount * 2);多次测试,总耗时在36s左右
这..................
0 0
- IO型任务,线程池越大越好?
- 线程--任务
- Java高并发编程——为IO密集型应用设计线程数与划分任务
- Java高并发编程——为IO密集型应用设计线程数与划分任务
- Java高并发编程——为IO密集型应用设计线程数与划分任务
- Java高并发编程——为IO密集型应用设计线程数与划分任务
- 任务,过程,和线程
- 任务,过程,和线程
- 任务、进程、线程
- 任务、进程和线程
- 2.9 线程与任务
- 任务,过程,和线程
- 任务、进程和线程
- 线程池任务队列
- 任务 进程 线程
- 任务、进程和线程
- [MFC]多任务线程
- [MFC]多任务线程
- 网络通信
- JAVA数据库连接池实现demo
- linux2.6.28块设备mmc_sd卡初始化和识别流程及读写请求流程
- 数理逻辑考试题目分析
- Linux下的段错误分析
- IO型任务,线程池越大越好?
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- The best hacker forums in the internet ( top 5 )
- JSP详解(二):九大内置对象
- 使用RTC调用WebService
- openwrt 驱动 hello world
- Java删除ArrayList中的重复元素的2种方法
- Asp.Net Cookie 和 Session 的编写、读取 和 删除
- GiraphV1.2之DiskMessage 运行设置