摘要:密集密集型的話,是指系統(tǒng)大部分時(shí)間在跟交互,而這個(gè)時(shí)間線程不會占用來處理,即在這個(gè)時(shí)間范圍內(nèi),可以由其他線程來使用,因而可以多配置一些線程。密集型線程大小使用這樣語義化設(shè)置,表達(dá)能力強(qiáng)一些。
類型判斷(CPU密集orIO密集or混合型)
看應(yīng)用是CPU密集型的還是IO密集型的,還是混合型的。
CPU密集
CPU密集型的話,一般配置CPU處理器個(gè)數(shù)+/-1個(gè)線程,所謂CPU密集型就是指系統(tǒng)大部分時(shí)間是在做程序正常的計(jì)算任務(wù),例如數(shù)字運(yùn)算、賦值、分配內(nèi)存、內(nèi)存拷貝、循環(huán)、查找、排序等,這些處理都需要CPU來完成。
IO密集
IO密集型的話,是指系統(tǒng)大部分時(shí)間在跟I/O交互,而這個(gè)時(shí)間線程不會占用CPU來處理,即在這個(gè)時(shí)間范圍內(nèi),可以由其他線程來使用CPU,因而可以多配置一些線程。
混合型
混合型的話,是指兩者都占有一定的時(shí)間。
/** * 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這樣語義化設(shè)置,表達(dá)能力強(qiáng)一些。
Java線程池配置原則
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/67423.html
摘要:在開發(fā)過程中,合理地使用線程池能夠帶來個(gè)好處。性質(zhì)不同的任務(wù)可以交給不同規(guī)模的線程池執(zhí)行。當(dāng)然具體合理線程池值大小,需要結(jié)合系統(tǒng)實(shí)際情況,在大量的嘗試下比較才能得出,以上只是前人總結(jié)的規(guī)律。 線程池簡述 Java中的線程池是運(yùn)用場景最多的并發(fā)框架,幾乎所有需要異步或并發(fā)執(zhí)行任務(wù)的程序都可以使用線程池。在開發(fā)過程中,合理地使用線程池能夠帶來3個(gè)好處。 降低資源消耗。通過重復(fù)利用已創(chuàng)建的...
摘要:你僅僅需要一個(gè)大小為數(shù)據(jù)庫連接池,然后讓剩下的業(yè)務(wù)線程都在隊(duì)列里等待就可以了。你應(yīng)該經(jīng)常會看到一些用戶量不是很大的應(yīng)用中,為應(yīng)付大約十來個(gè)的并發(fā),卻將數(shù)據(jù)庫連接池設(shè)置成,的情況。請不要過度配置您的數(shù)據(jù)庫連接池的大小。 文章翻譯整理自: https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing歡迎關(guān)注個(gè)人微信公眾...
摘要:你僅僅需要一個(gè)大小為數(shù)據(jù)庫連接池,然后讓剩下的業(yè)務(wù)線程都在隊(duì)列里等待就可以了。你應(yīng)該經(jīng)常會看到一些用戶量不是很大的應(yīng)用中,為應(yīng)付大約十來個(gè)的并發(fā),卻將數(shù)據(jù)庫連接池設(shè)置成,的情況。請不要過度配置您的數(shù)據(jù)庫連接池的大小。 文章翻譯整理自: https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing歡迎關(guān)注個(gè)人微信公眾...
摘要:具體線程池大小觀測,可以通過覆蓋的鉤子方法,進(jìn)行線程池的監(jiān)控,查看等待隊(duì)列大小等等,主要觀察等待隊(duì)列的大小以及拒絕的任務(wù)多少。 CPU密集orIO密集or混合型 看應(yīng)用是CPU密集型的還是IO密集型的,還是混合型的。 CPU密集CPU密集型的話,一般配置CPU處理器個(gè)數(shù)+/-1個(gè)線程,所謂CPU密集型就是指系統(tǒng)大部分時(shí)間是在做程序正常的計(jì)算任務(wù),例如數(shù)字運(yùn)算、賦值、分配內(nèi)存、內(nèi)存拷貝...
閱讀 2288·2019-08-30 15:56
閱讀 3120·2019-08-30 13:48
閱讀 1136·2019-08-30 10:52
閱讀 1505·2019-08-29 17:30
閱讀 431·2019-08-29 13:44
閱讀 3567·2019-08-29 12:53
閱讀 1127·2019-08-29 11:05
閱讀 2680·2019-08-26 13:24