摘要:密集密集型的话,是指系统大部分时间在跟交互,而这个时间线程不会占用来处理,即在这个时间范围内,可以由其他线程来使用,因而可以多配置一些线程。密集型线程大小使用这样语义化设置,表达能力强一些。
类型判断(CPU密集orIO密集or混合型)
看应用是CPU密集型的还是IO密集型的,还是混合型的。
CPU密集
CPU密集型的话,一般配置CPU处理器个数+/-1个线程,所谓CPU密集型就是指系统大部分时间是在做程序正常的计算任务,例如数字运算、赋值、分配内存、内存拷贝、循环、查找、排序等,这些处理都需要CPU来完成。
IO密集
IO密集型的话,是指系统大部分时间在跟I/O交互,而这个时间线程不会占用CPU来处理,即在这个时间范围内,可以由其他线程来使用CPU,因而可以多配置一些线程。
混合型
混合型的话,是指两者都占有一定的时间。
/** * Support class for thread pool size * * @author Nadeem Mohammad * */ public final class ThreadPoolUtil { private ThreadPoolUtil() { } /** * Each tasks blocks 90% of the time, and works only 10% of its * lifetime. That is, I/O intensive pool * @return io intesive Thread pool size */ public static int ioIntesivePoolSize() { double blockingCoefficient = 0.9; return poolSize(blockingCoefficient); } /** * * Number of threads = Number of Available Cores / (1 - Blocking * Coefficient) where the blocking coefficient is between 0 and 1. * * A computation-intensive task has a blocking coefficient of 0, whereas an * IO-intensive task has a value close to 1, * so we don"t have to worry about the value reaching 1. * @param blockingCoefficient the coefficient * @return Thread pool size */ public static int poolSize(double blockingCoefficient) { int numberOfCores = Runtime.getRuntime().availableProcessors(); int poolSize = (int) (numberOfCores / (1 - blockingCoefficient)); return poolSize; } }使用
ExecutorService executorService = Executors.newFixedThreadPool(ThreadPoolUtil.ioIntesivePoolSize());
doc这样语义化设置,表达能力强一些。
Java线程池配置原则
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67423.html
摘要:你仅仅需要一个大小为数据库连接池,然后让剩下的业务线程都在队列里等待就可以了。你应该经常会看到一些用户量不是很大的应用中,为应付大约十来个的并发,却将数据库连接池设置成,的情况。请不要过度配置您的数据库连接池的大小。 文章翻译整理自: https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing欢迎关注个人微信公众...
摘要:你仅仅需要一个大小为数据库连接池,然后让剩下的业务线程都在队列里等待就可以了。你应该经常会看到一些用户量不是很大的应用中,为应付大约十来个的并发,却将数据库连接池设置成,的情况。请不要过度配置您的数据库连接池的大小。 文章翻译整理自: https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing欢迎关注个人微信公众...
摘要:具体线程池大小观测,可以通过覆盖的钩子方法,进行线程池的监控,查看等待队列大小等等,主要观察等待队列的大小以及拒绝的任务多少。 CPU密集orIO密集or混合型 看应用是CPU密集型的还是IO密集型的,还是混合型的。 CPU密集CPU密集型的话,一般配置CPU处理器个数+/-1个线程,所谓CPU密集型就是指系统大部分时间是在做程序正常的计算任务,例如数字运算、赋值、分配内存、内存拷贝...
阅读 2272·2019-08-30 15:56
阅读 3110·2019-08-30 13:48
阅读 1125·2019-08-30 10:52
阅读 1492·2019-08-29 17:30
阅读 420·2019-08-29 13:44
阅读 3534·2019-08-29 12:53
阅读 1115·2019-08-29 11:05
阅读 2669·2019-08-26 13:24