线程池配置合理线程数

1.cpu密集型(例如while循环 )

cpu密集的意思是该任务需要大量的运算,而没有阻塞,cpu一直全速运行。

cpu密集任务只有在真正的多核cpu上才可能得到加速(通过多线程)

而在单核cpu上,无论你开几个模拟的多线程该任务都不可能得到加速,因为cpu总的运算能力就那些

cpu密集型任务配置尽可能少的线程数量

一般公式:cpu核数+1个线程的线程池

System.out.println(Runtime.getRuntime().availableProcessors()); //可以算出核数,例如结果为8就是8核

2.IO密集型(例如数据库取数据操作)

第一种:

由于IO密集型任务线程并不是一直在执行任务,则应配置尽可能多的线程,如cpu核数*2

第二种:

参考公式:cpu核数/1-阻塞系数             阻塞系数在0.8~0.9之间

比如8核cpu:8/1-0.9 = 80个线程数



原文地址:https://www.cnblogs.com/liuyi13535496566/p/12169222.html

时间: 2024-11-07 22:12:14

线程池配置合理线程数的相关文章

TestNG的參数化測试、共享线程池配置、參数默认值配置

在使用TestNG进行測试时,常常会使用到一些參数化配置,比方数据库.连接池.线程池数. 使用TestNG的參数@Parameter注解进行自己主动化读取 原创文章,版权全部.同意转载,标明出处:http://blog.csdn.net/wanghantong 使用多线程的方式执行測试代码配置: 在'<suite>'标签中配置data-provider-thread-count="20" Java代码: /** * * <p> * Title: TestngPa

TestNg线程池配置、执行次数配置、超时配置

使用注解的方式对TestNg线程池配置.执行次数配置.超时配置 注:使用注解来控制测试方法运行的次数和超时时间,timeOut在单线程或者多线程模式下都可用,threadPoolSize设置了线程池的个数 * ,在观察结果时,发现很多值是重复的,但是可能不等于我们配置的线程池个数,因为线程的个数还取决于硬件CPU的支持, invocationCount----表示执行的次数 threadPoolSize-----表示线程池的内线程的个数 timeOut-------超时时间-毫秒 Javacod

Tomcat线程池配置

1:配置executor属性 打开/conf/server.xml文件,在Connector之前配置一个线程池: <Executor name="tomcatThreadPool" namePrefix="tomcatThreadPool-" maxThreads="1000" maxIdleTime="300000" minSpareThreads="200"/> 重要参数说明: name:共

TestNG的参数化测试、共享线程池配置、参数默认值配置

在使用TestNG进行测试时,经常会使用到一些参数化配置,比如数据库.连接池.线程池数, 使用TestNG的参数@Parameter注解进行自动化读取 使用多线程的方式运行测试代码配置: 在'<suite>'标签中配置data-provider-thread-count="20" Java代码: /** * * <p> * Title: TestngParameters * </p> * * <p> * 参考配置文件testng-para

spring线程池配置

源自:http://zjriso.iteye.com/blog/771706 1.了解 TaskExecutor接口 Spring的TaskExecutor接口等同于java.util.concurrent.Executor接口. 实际上,它存在的主要原因是为了在使用线程池的时候,将对Java 5的依赖抽象出来. 这个接口只有一个方法execute(Runnable task),它根据线程池的语义和配置,来接受一个执行任务.最初创建TaskExecutor是为了在需要时给其他Spring组件提供

【Java 并发】Executor框架机制与线程池配置使用

[Java 并发]Executor框架机制与线程池配置使用 一,Executor框架Executor框架便是Java 5中引入的,其内部使用了线程池机制,在java.util.cocurrent 包下,通过该框架来控制线程的启动.执行和关闭,可以简化并发编程的操作.因此,在Java 5之后,通过Executor来启动线程比使用Thread的start方法更好,更易管理,效率更好(用线程池实现,节约开销). Executor框架主要包括:Executor,Executors,ExecutorSer

通过设置线程池的最小线程数来提高task的效率,SetMinThreads。

http://www.cnblogs.com/Charltsing/p/taskpoolthread.html task默认对线程的调度是逐步增加的,连续多次运行并发线程,会提高占用的线程数,而等若干秒不运行,线程数又会降低.这样,会影响程序多次运行的效率. 即使使用了TaskCreationOptions.LongRunning参数,依然效率偏低.对于一些固定执行时间的线程,我们可以提高线程池的最小线程数,来显著提高task多线程的效率. ThreadPool.SetMinThreads(10

线程池和异步线程

目录: 1 什么是CLR线程池? 2 简单介绍下线程池各个优点的实现细节 3 线程池ThreadPool的常用方法介绍 4 简单理解下异步线程 5 异步线程的工作过程和几个重要的元素 6 有必要简单介绍下Classic Async Pattern 和Event-based Async Pattern 7 异步线程的发展趋势以及.net4.5异步的简化 8 本章示例 自定义一个简单的线程池 Asp.net异步IHttpAsyncHandler示例 9 本章总结 1 什么是CLR线程池? 在上一章中

Android 线程池来管理线程

网上讲了很多的关于线程池的例子.其实在我们实际应用中,譬如说,一个应用的线程是怎样来管理的,我们就可以说,我们可以使用线程池来管理线程. eg: class DianLiang1 implements Runnable { @Override punlic void Run{ system.println("*************111111111111111111111****************"); } } class DianLiang2 implements Runn