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

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

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

瀏覽:18日期: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久久,三上悠亚国产精品一区二区三区
欧美日韩在线网站| 日韩国产欧美在线播放| 国产亚洲一卡2卡3卡4卡新区| 亚洲一区二区日韩| 亚洲激情偷拍| 午夜在线播放视频欧美| 久久av在线| 奶水喷射视频一区| 奶水喷射视频一区| 综合亚洲色图| 日韩精品视频一区二区三区| 91精品国产一区二区在线观看| 日本一区二区三区视频在线看| 日本综合精品一区| 国产日韩欧美一区在线| 麻豆成人91精品二区三区| 色婷婷色综合| 在线亚洲人成| 欧美69视频| 久久亚洲影院| 日韩av午夜在线观看| 国产亚洲高清在线观看| 精品亚洲a∨一区二区三区18| 最近高清中文在线字幕在线观看1| 一本大道色婷婷在线| 久久中文视频| 亚洲综合日韩| 欧美午夜三级| 精品三级在线观看视频| 九九精品调教| 免费在线视频一区| 国产乱码精品一区二区三区四区| 国产一区二区三区久久久久久久久| 日韩电影在线视频| 女人天堂亚洲aⅴ在线观看| 亚洲欧美日本国产| 精品一区二区三区中文字幕视频| 久久高清精品| 日韩中文字幕无砖| sm捆绑调教国产免费网站在线观看| 国内精品福利| 日韩av午夜在线观看| 黄色在线观看www| 久久亚洲风情| 精品国产一区二区三区噜噜噜| 伊人久久高清| 一区二区三区四区日韩| 你懂的亚洲视频| 九一精品国产| 国产三级一区| 久久免费高清| 日韩精品成人在线观看| 亚洲欧洲高清| 一区二区国产在线| 日韩成人精品一区二区| 蜜桃av一区| 老牛影视精品| 日韩综合一区二区三区| 亲子伦视频一区二区三区| 天堂va欧美ⅴa亚洲va一国产| www.com.cn成人| 亚洲综合中文| 国产白浆在线免费观看| 亚洲香蕉视频| 岛国av在线网站| 日韩精品久久理论片| 色吊丝一区二区| 欧美片第1页综合| 亚洲二区三区不卡| 久久一区精品| 日韩欧美中文在线观看| 亚州av乱码久久精品蜜桃| 久久久91麻豆精品国产一区| 视频一区二区三区在线| 日韩在线免费| 国产精品免费99久久久| 老牛国产精品一区的观看方式| 日产午夜精品一线二线三线| 国产欧美日韩精品一区二区免费| 蜜臀精品久久久久久蜜臀 | 国产一区二区三区不卡视频网站 | 国产成人精选| 亚洲综合不卡| 欧美成a人国产精品高清乱码在线观看片在线观看久| 中文欧美日韩| 日本免费久久| 久久三级毛片| 日韩国产在线观看| 国产色综合网| 午夜影院一区| 美日韩一区二区三区| 亚洲18在线| 国产亚洲欧洲| 欧美成人基地| 日韩成人免费| 国产欧美大片| 国产日产高清欧美一区二区三区 | аⅴ资源天堂资源库在线| 日韩成人午夜精品| 老鸭窝毛片一区二区三区| 神马日本精品| 中文在线资源| av在线资源| 国产在视频一区二区三区吞精| 日韩欧美2区| 久久亚洲不卡| 国产精品毛片在线| 亚洲国内精品| 欧美性感美女一区二区| 麻豆mv在线观看| 久久97视频| 国产剧情在线观看一区| 日本aⅴ亚洲精品中文乱码 | 99精品电影| 日韩电影免费网址| 黑人精品一区| 日韩精品欧美激情一区二区| а√天堂中文在线资源8| 国际精品欧美精品| 福利一区和二区| 国产精品国产三级国产在线观看| 久久亚洲资源中文字| 麻豆国产精品一区二区三区| 精品国产一级| av中文资源在线资源免费观看| 97精品国产| 色婷婷精品视频| 日韩午夜高潮| 亚洲制服欧美另类| 日韩不卡在线观看日韩不卡视频| 国产欧美午夜| 国产福利一区二区三区在线播放| 欧美国产专区| 精品国产网站| 日韩欧美自拍| 欧美福利一区| 久久国产精品久久久久久电车 | 性色一区二区| 免费精品视频| 日韩精品中文字幕吗一区二区| 日韩精品导航| 欧美精品不卡| 另类专区亚洲| 国产尤物精品| 视频在线观看一区二区三区| 日本不卡一区二区三区| 国产精品欧美一区二区三区不卡| 麻豆高清免费国产一区| 婷婷综合六月| 在线看片不卡| 欧美资源在线| 国产伦精品一区二区三区千人斩| 精品国产亚洲一区二区三区| 欧美激情另类| 欧美+亚洲+精品+三区| 日本大胆欧美人术艺术动态| 91精品福利观看| 精品一区二区三区四区五区| 国产综合色区在线观看| 欧美午夜不卡影院在线观看完整版免费| 日韩精品一二区| 欧美激情一区| 999精品在线| 蜜桃久久久久久| 国产福利一区二区三区在线播放| 日韩综合在线| 丝袜美腿一区二区三区| 久久国际精品| 亚洲www免费| 亚洲欧洲日韩精品在线| 美女国产一区二区三区| 久久久久蜜桃| 日韩免费精品| 欧美片第1页| 日韩中文字幕麻豆| 久久精品欧洲| 国产亚洲一级| 久久天堂影院| 日韩制服丝袜先锋影音| 精品久久一区| 午夜国产精品视频免费体验区| 欧美日韩黄网站| 亚洲成人国产| 久久狠狠亚洲综合| 国产主播一区| 国产亚洲高清一区| 欧美日韩日本国产亚洲在线| 麻豆精品新av中文字幕| 在线综合亚洲| 国产一区二区三区久久| 亚洲另类av| 久久久久国产精品一区二区| 日韩avvvv在线播放| 亚洲一级黄色| 麻豆传媒一区二区三区| 中文亚洲欧美| 久久免费影院| 亚洲免费资源| 欧美影院三区| 精品国产一区二区三区av片|