摘要:密集密集型的話,是指系統(tǒng)大部分時間在跟交互,而這個時間線程不會占用來處理,即在這個時間范圍內,可以由其他線程來使用,因而可以多配置一些線程。密集型線程大小使用這樣語義化設置,表達能力強一些。
類型判斷(CPU密集orIO密集or混合型)
看應用是CPU密集型的還是IO密集型的,還是混合型的。
CPU密集
CPU密集型的話,一般配置CPU處理器個數(shù)+/-1個線程,所謂CPU密集型就是指系統(tǒng)大部分時間是在做程序正常的計算任務,例如數(shù)字運算、賦值、分配內存、內存拷貝、循環(huán)、查找、排序等,這些處理都需要CPU來完成。
IO密集
IO密集型的話,是指系統(tǒng)大部分時間在跟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線程池配置原則
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://www.ezyhdfw.cn/yun/67423.html
摘要:你僅僅需要一個大小為數(shù)據(jù)庫連接池,然后讓剩下的業(yè)務線程都在隊列里等待就可以了。你應該經常會看到一些用戶量不是很大的應用中,為應付大約十來個的并發(fā),卻將數(shù)據(jù)庫連接池設置成,的情況。請不要過度配置您的數(shù)據(jù)庫連接池的大小。 文章翻譯整理自: https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing歡迎關注個人微信公眾...
摘要:你僅僅需要一個大小為數(shù)據(jù)庫連接池,然后讓剩下的業(yè)務線程都在隊列里等待就可以了。你應該經常會看到一些用戶量不是很大的應用中,為應付大約十來個的并發(fā),卻將數(shù)據(jù)庫連接池設置成,的情況。請不要過度配置您的數(shù)據(jù)庫連接池的大小。 文章翻譯整理自: https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing歡迎關注個人微信公眾...
摘要:具體線程池大小觀測,可以通過覆蓋的鉤子方法,進行線程池的監(jiān)控,查看等待隊列大小等等,主要觀察等待隊列的大小以及拒絕的任務多少。 CPU密集orIO密集or混合型 看應用是CPU密集型的還是IO密集型的,還是混合型的。 CPU密集CPU密集型的話,一般配置CPU處理器個數(shù)+/-1個線程,所謂CPU密集型就是指系統(tǒng)大部分時間是在做程序正常的計算任務,例如數(shù)字運算、賦值、分配內存、內存拷貝...
閱讀 2333·2019-08-30 15:56
閱讀 3163·2019-08-30 13:48
閱讀 1185·2019-08-30 10:52
閱讀 1552·2019-08-29 17:30
閱讀 477·2019-08-29 13:44
閱讀 3711·2019-08-29 12:53
閱讀 1181·2019-08-29 11:05
閱讀 2723·2019-08-26 13:24