国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

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

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

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

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

- public static ExecutorService newFixedThreadPool(int nThreads)

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

- Future<?> submit(Runnable task)

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

大家如何估算線程池數(shù)量?

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

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

  • Nthreads:線程數(shù)量

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

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

  • W/C:等待時間與計算時間的比率

其實就是要分清是計算密集型還是IO密集型。

如果是C無限大也就是計算密集型的那么線程太多意義不大,因為需要CPU計算,起多了也沒用。

如果是IO密集型那么可以起更多的線程,因為等待時間過多。

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

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

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

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