成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

java是什么 java多線程ExecutorService線程數(shù)量?

java多線程ExecutorService線程數(shù)量?新增了一個(gè)Executors工廠類產(chǎn)生線程池,如下面幾個(gè)方法- public static ExecutorService newFixedThr

java多線程ExecutorService線程數(shù)量?

新增了一個(gè)Executors工廠類產(chǎn)生線程池,如下面幾個(gè)方法

- public static ExecutorService newFixedThreadPool(int nThreads)

- public static ExecutorService newSingleThreadExecutor()這些方法的返回值是ExecutorService對(duì)象,該對(duì)象表示一個(gè)線程池,可以執(zhí)行Runnable對(duì)象或者Callable對(duì)象代表的線程。它提供了如下方法:

- Future<?> submit(Runnable task)

- <T> Future<T> submit(Callable<T> task)

大家如何估算線程池?cái)?shù)量?

線程池的大小對(duì)系統(tǒng)的性能有一定的影響,過(guò)大或者過(guò)小的線程數(shù)量都無(wú)法發(fā)揮最優(yōu)的系統(tǒng)性能,但是線程池大小的確定也不需要做的非常精確。因?yàn)橹灰苊鈽O大和極小兩種情況,線程池的大小對(duì)性能的影響都不會(huì)影響太大,一般來(lái)說(shuō),確定線程池的大小需要考慮CPU數(shù)量,內(nèi)存大小等因素,在《Java Concurrency in Practice》 書(shū)中給出了一個(gè)估算線程池大小的經(jīng)驗(yàn)公式:

公式:Nthread = Ncpu * Ucpu * (1 W/C),各字段含義:

  • Nthreads:線程數(shù)量

  • Ncpu:CPU的數(shù)量,Runtime.getRuntime().availableProcessors()

  • Ucpu:CPU使用率,范圍在[0,1]

  • W/C:等待時(shí)間與計(jì)算時(shí)間的比率

其實(shí)就是要分清是計(jì)算密集型還是IO密集型。

如果是C無(wú)限大也就是計(jì)算密集型的那么線程太多意義不大,因?yàn)樾枰狢PU計(jì)算,起多了也沒(méi)用。

如果是IO密集型那么可以起更多的線程,因?yàn)榈却龝r(shí)間過(guò)多。

簡(jiǎn)單總結(jié)就是:IO密集多線程,計(jì)算密集線程=CPU核數(shù)比較合適。

歡迎關(guān)注筆者,持續(xù)分享有價(jià)值的優(yōu)質(zhì)架構(gòu)文章。

java什么是線程池及為什么要使用線程池?

創(chuàng)建線程要花費(fèi)昂貴的資源和時(shí)間,如果任務(wù)來(lái)了才創(chuàng)建線程那么響應(yīng)時(shí)間會(huì)變長(zhǎng),而且一個(gè)進(jìn)程能創(chuàng)建的線程數(shù)有限。為了避免這些問(wèn)題,在程序啟動(dòng)的時(shí)候就創(chuàng)建若干線程來(lái)響應(yīng)處理,它們被稱為線程池,里面的線程叫工作線程。從JDK1.5開(kāi)始,Java API提供了Executor框架讓你可以創(chuàng)建不同的線程池。比如單線程池,每次處理一個(gè)任務(wù);數(shù)目固定的線程池或者是緩存線程池(一個(gè)適合很多生存期短的任務(wù)的程序的可擴(kuò)展線程池)。