日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JAVA 自定義線程池的最大線程數設置方法

瀏覽:19日期:2022-08-30 11:41:39

一:CPU密集型:

定義:CPU密集型也是指計算密集型,大部分時間用來做計算邏輯判斷等CPU動作的程序稱為CPU密集型任務。該類型的任務需要進行大量的計算,主要消耗CPU資源。 這種計算密集型任務雖然也可以用多任務完成,但是任務越多,花在任務切換的時間就越多,CPU執行任務的效率就越低,所以,要最高效地利用CPU,計算密集型任務同時進行的數量應當等于CPU的核心數。

特點:

01:CPU 使用率較高(也就是經常計算一些復雜的運算,邏輯處理等情況)非常多的情況下使用

02:針對單臺機器,最大線程數一般只需要設置為CPU核心數的線程個數就可以了

03:這一類型多出現在開發中的一些業務復雜計算和邏輯處理過程中。

代碼示例:

package pool;import java.util.concurrent.Executors;import java.util.concurrent.LinkedBlockingDeque;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class Demo02 { public static void main(String[] args) { //自定義線程池! 工作中只會使用 ThreadPoolExecutor /** * 最大線程該如何定義(線程池的最大的大小如何設置!) * 1、CPU 密集型,幾核,就是幾,可以保持CPU的效率最高! */ //獲取電腦CPU核數 System.out.println(Runtime.getRuntime().availableProcessors()); //8核 ThreadPoolExecutor threadPool = new ThreadPoolExecutor( 2, //核心線程池大小 Runtime.getRuntime().availableProcessors(), //最大核心線程池大小(CPU密集型,根據CPU核數設置) 3, //超時了沒有人調用就會釋放 TimeUnit.SECONDS,//超時單位 new LinkedBlockingDeque<>(3), //阻塞隊列 Executors.defaultThreadFactory(), //線程工廠,創建線程的,一般不用動 new ThreadPoolExecutor.AbortPolicy()); //銀行滿了,還有人進來,不處理這個人的,拋出異常 try { //最大承載數,Deque + Max (隊列線程數+最大線程數) //超出 拋出 RejectedExecutionException 異常 for (int i = 1; i <= 9; i++) { //使用了線程池之后,使用線程池來創建線程 threadPool.execute(()->{ System.out.println(Thread.currentThread().getName()+' ok'); }); } } catch (Exception e) { e.printStackTrace(); } finally { //線程池用完,程序結束,關閉線程池 threadPool.shutdown(); //(為確保關閉,將關閉方法放入到finally中) } }}

二:IO密集型:

定義:IO密集型任務指任務需要執行大量的IO操作,涉及到網絡、磁盤IO操作,對CPU消耗較少,其消耗的主要資源為IO。

我們所接觸到的 IO ,大致可以分成兩種:磁盤 IO和網絡 IO。

01:磁盤 IO ,大多都是一些針對磁盤的讀寫操作,最常見的就是文件的讀寫,假如你的數據庫、 Redis 也是在本地的話,那么這個也屬于磁盤 IO。

02:網絡 IO ,這個應該是大家更加熟悉的,我們會遇到各種網絡請求,比如 http 請求、遠程數據庫讀寫、遠程 Redis 讀寫等等。

  IO 操作的特點就是需要等待,我們請求一些數據,由對方將數據寫入緩沖區,在這段時間中,需要讀取數據的線程根本無事可做,因此可以把 CPU 時間片讓出去,直到緩沖區寫滿。

既然這樣,IO 密集型任務其實就有很大的優化空間了(畢竟存在等待):

 CPU 使用率較低,程序中會存在大量的 I/O 操作占用時間,導致線程空余時間很多,所以通常就需要開CPU核心數兩倍的線程。當線程進行 I/O 操作 CPU 空閑時,線程等待時間所占比例越高,就需要越多線程,啟用其他線程繼續使用 CPU,以此提高 CPU 的使用率;線程 CPU 時間所占比例越高,需要越少的線程,這一類型在開發中主要出現在一些計算業務頻繁的邏輯中。

代碼示例:

package pool;import java.util.concurrent.Executors;import java.util.concurrent.LinkedBlockingDeque;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class Demo02 { public static void main(String[] args) { //自定義線程池! 工作中只會使用 ThreadPoolExecutor /** * 最大線程該如何定義(線程池的最大的大小如何設置!) * 2、IO 密集型 >判斷你程序中十分耗IO的線程 * 程序 15個大型任務 io十分占用資源! (最大線程數設置為30) * 設置最大線程數為十分耗io資源線程個數的2倍 */ //獲取電腦CPU核數 System.out.println(Runtime.getRuntime().availableProcessors()); //8核 ThreadPoolExecutor threadPool = new ThreadPoolExecutor( 2,//核心線程池大小 16, //若一個IO密集型程序有15個大型任務且其io十分占用資源!(最大線程數設置為 2*CPU 數目) 3,//超時了沒有人調用就會釋放 TimeUnit.SECONDS, //超時單位 new LinkedBlockingDeque<>(3), //阻塞隊列 Executors.defaultThreadFactory(), //線程工廠,創建線程的,一般不用動 new ThreadPoolExecutor.DiscardOldestPolicy()); //隊列滿了,嘗試和最早的競爭,也不會拋出異常 try { //最大承載數,Deque + Max (隊列線程數+最大線程數) //超出 拋出 RejectedExecutionException 異常 for (int i = 1; i <= 9; i++) { //使用了線程池之后,使用線程池來創建線程 threadPool.execute(()->{ System.out.println(Thread.currentThread().getName()+' ok'); }); } } catch (Exception e) { e.printStackTrace(); } finally { //線程池用完,程序結束,關閉線程池 threadPool.shutdown(); //(為確保關閉,將關閉方法放入到finally中) } }}

接下來我們進行一一分析:

1:高并發、任務執行時間短的業務,線程池線程數可以設置為CPU核數+1,減少線程上下文的切換

2:并發不高、任務執行時間長的業務這就需要區分開看了:

a)假如是業務時間長集中在IO操作上,也就是IO密集型的任務,因為IO操作并不占用CPU,所以不要讓所有的CPU閑下來,可以適當加大線程池中的線程數目,讓CPU處理更多的業務

b)假如是業務時間長集中在計算操作上,也就是計算密集型任務,這個就沒辦法了,線程池中的線程數設置得少一些,減少線程上下文的切換

(其實從一二可以看出無論并發高不高,對于業務中是否是cpu密集還是I/O密集的判斷都是需要的當前前提是你需要優化性能的前提下)

3:并發高、業務執行時間長,解決這種類型任務的關鍵不在于線程池而在于整體架構的設計,看看這些業務里面某些數據是否能做緩存是第一步,我們的項目使用的時redis作為緩存(這類非關系型數據庫還是挺好的)。增加服務器是第二步(一般政府項目的首先,因為不用對項目技術做大改動,求一個穩,但前提是資金充足),至于線程池的設置,設置參考 2 。最后,業務執行時間長的問題,也可能需要分析一下,看看能不能使用中間件(任務時間過長的可以考慮拆分邏輯放入隊列等操作)對任務進行拆分和解耦。

三.:總結:

01:一個計算為主的程序(CPU密集型程序),多線程跑的時候,可以充分利用起所有的 CPU 核心數,比如說 8 個核心的CPU ,開8 個線程的時候,可以同時跑 8 個線程的運算任務,此時是最大效率。但是如果線程遠遠超出 CPU 核心數量,反而會使得任務效率下降,因為頻繁的切換線程也是要消耗時間的。因此對于 CPU 密集型的任務來說,線程數等于 CPU 數是最好的了。

02:如果是一個磁盤或網絡為主的程序(IO密集型程序),一個線程處在 IO 等待的時候,另一個線程還可以在 CPU 里面跑,有時候 CPU 閑著沒事干,所有的線程都在等著 IO,這時候他們就是同時的了,而單線程的話此時還是在一個一個等待的。我們都知道 IO 的速度比起 CPU 來是很慢的。此時線程數等于CPU核心數的兩倍是最佳的。

以上就是JAVA 自定義線程池的最大線程數設置方法的詳細內容,更多關于JAVA 自定義線程池的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
麻豆一区二区在线| 欧美日韩国产v| 国户精品久久久久久久久久久不卡| 91精品一区| 久久国产三级精品| 亚洲无线观看| 亚洲2区在线| 日韩一区二区三区四区五区| 蜜臀av一区二区在线免费观看| 久久精品免费一区二区三区| 国户精品久久久久久久久久久不卡 | 久久国产生活片100| 日韩黄色在线观看| 国产精品videossex| 久久精品二区亚洲w码| 激情视频网站在线播放色| 久久精品国产68国产精品亚洲| 久久亚洲在线| 亚洲开心激情| 国产精品久久亚洲不卡| 中文字幕在线官网| 久久av在线| 97精品久久| 精品日韩在线| 成人av动漫在线观看| 亚洲欧美在线综合| 国产情侣久久| 久久美女精品| 日韩国产精品久久久| 岛国av在线网站| 美女精品一区| 精品淫伦v久久水蜜桃| 欧美aa在线观看| 婷婷精品在线| 久久三级福利| 久久精品网址| 日韩av午夜在线观看| 欧美黄色网页| 久久精品一区二区三区中文字幕| 五月天激情综合网| 丰满少妇一区| 热久久久久久| 蜜臀av亚洲一区中文字幕| 久久青青视频| 精品国产中文字幕第一页| 亚洲精品无播放器在线播放| 亚洲先锋成人| 久久九九99| 黄色在线网站噜噜噜| 国产人成精品一区二区三| 亚洲精品免费观看| 黄色亚洲精品| 日韩精品91| 久久亚洲资源中文字| 日韩成人一级| 五月亚洲婷婷 | 精品国产精品久久一区免费式| 亚洲一区二区小说| 日韩中文字幕| 日韩精品一二三区| 欧美日韩精品一区二区视频| 国产aⅴ精品一区二区三区久久| 国产免费av国片精品草莓男男 | 鲁大师成人一区二区三区| 欧美日韩一二三四| 精品中文一区| 欧美理论视频| 激情婷婷亚洲| 黄色成人91| 婷婷久久免费视频| 国产精品天堂蜜av在线播放| 日韩在线黄色| 国产精品超碰| 四虎成人av| 久久精品亚洲人成影院| 亚洲日本网址| 精品一区在线| 国产精品嫩草99av在线| 性色一区二区| 欧美日韩一区二区三区四区在线观看| 日本不卡中文字幕| 国产一区二区三区四区五区| 日韩欧美一区免费| 日韩专区在线视频| 国产精品2区| 日韩免费一区| 综合激情在线| 国产精品xx| 蜜桃视频在线观看一区| 久久av综合| 自拍日韩欧美| 欧美精品国产白浆久久久久| 在线看片福利| 色综合视频一区二区三区日韩| 老司机精品视频在线播放| 五月天综合网站| 国产精品久久久久av蜜臀| 国产综合亚洲精品一区二| 亚洲一级淫片| 色综合五月天| 亚洲精品无播放器在线播放| 亚洲播播91| 欧美交a欧美精品喷水| av亚洲免费| 91视频一区| 国产美女视频一区二区| 亚洲综合不卡| 国产成人精品一区二区三区免费| 亚洲视频二区| 精品亚洲美女网站| 久久不见久久见国语| 亚洲我射av| 婷婷亚洲综合| 97精品国产一区二区三区| 久久不卡日韩美女| 青青伊人久久| 日韩在线观看中文字幕| 丝袜诱惑制服诱惑色一区在线观看| 精品三级在线| 日韩福利在线观看| 日韩三级一区| 老鸭窝亚洲一区二区三区| 日韩免费小视频| 97在线精品| 正在播放日韩精品| 狠狠久久伊人中文字幕| 成人午夜亚洲| 日韩综合在线| 97精品一区二区| 色一区二区三区| 国产h片在线观看| 国产 日韩 欧美 综合 一区| 国产videos久久| 欧美日韩在线观看首页| 日韩欧美一区二区三区在线观看| 国产+成+人+亚洲欧洲在线| 福利一区二区三区视频在线观看| 91亚洲自偷观看高清| 日本高清不卡一区二区三区视频| 国产精品黑丝在线播放| 成人av三级| 中文一区二区| 97精品久久| 水蜜桃精品av一区二区| 精品成人免费一区二区在线播放| 国产在线观看www| 中国女人久久久| 亚洲aa在线| 久久三级中文| 亚洲午夜精品久久久久久app| 欧美高清不卡| 日韩高清不卡一区| 97精品一区二区| 久久亚洲欧美| 国产精品一区二区三区美女 | 中国女人久久久| 国产精品18| 欧美一级精品| 欧美亚洲一级| 亚洲福利免费| 国产剧情在线观看一区| 香蕉成人av| 国产伦一区二区三区| 久久高清免费| 国产探花一区| 黄色国产精品| 久久精品资源| 亚洲欧美视频| 日韩av首页| 麻豆91小视频| 蜜芽一区二区三区| 欧美激情另类| 国产亚洲高清一区| 午夜欧美理论片| 国产在线视频欧美一区| 亚州av日韩av| 精品欧美久久| 日韩国产一区| 国产伦久视频在线观看| 久久精品 人人爱| 免费久久99精品国产| 亚洲午夜久久久久久尤物| 高清在线一区| 久久久亚洲欧洲日产| 日本成人在线网站| 亚洲精品女人| 丝袜美腿亚洲一区| 日韩视频二区| 国产精品嫩草99av在线| 日韩视频网站在线观看| 精品一区二区三区中文字幕| 日韩福利视频导航| 蜜臀av一区二区在线免费观看| 欧美成人午夜| 欧美日韩国产欧| 欧美日韩精品一本二本三本| 久久视频精品| 黄色av日韩| 日本在线成人| 国产精品调教|