激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - SpringBoot中線程池的設(shè)置

SpringBoot中線程池的設(shè)置

2021-06-17 23:55Java時間屋Jack佳 Java教程

多線程的設(shè)置是編程比較重要的一環(huán),無論是工作編程還是面試,是一個老生常談的話題,多線程一定比單線程跑的快嗎?答案肯定是no,什么時候使用多線程合適,什么場景下使用?線程池的配置又改怎么配置,本文進(jìn)行一篇總結(jié),

SpringBoot中線程池的設(shè)置

前言

多線程的設(shè)置是編程比較重要的一環(huán),無論是工作編程還是面試,是一個老生常談的話題,多線程一定比單線程跑的快嗎?答案肯定是no,什么時候使用多線程合適,什么場景下使用?線程池的配置又改怎么配置,本文進(jìn)行一篇總結(jié),歡迎朋友們交流。

1.一些概念介紹:

1.1計算機基礎(chǔ)知識:

計算機主要組件衛(wèi)CPU、內(nèi)存、磁盤,三大組件中,CPU的運行速率高于內(nèi)存的1000倍以上,內(nèi)存的運行速率高于磁盤1000倍以上。對比運行速率結(jié)果為:CPU>內(nèi)存>磁盤。

1.2上下文切換:

涉及到上下文切換,單核cpu切換是沒意義的,多核cpu的切換才能真正的滿足充分利用資源達(dá)到高性能的目的。

1.3線程爭用:

當(dāng)多個線程執(zhí)行任務(wù)不相同,但是訪問資源又相同的時候,有看呢過會引起數(shù)據(jù)問題。

1.4并發(fā)執(zhí)行:

可以理解為線程執(zhí)行任務(wù)相同,訪問資源相同的時候觸發(fā)的場景。

1.5 自旋鎖:

很形象的一個比喻是:沖奶的時候孩子還在哭,等著媽媽送來奶瓶和換尿布,直到媽媽處理好所有的事情才算結(jié)束,要不然就是個一直等待的狀態(tài)。

1.6 互斥鎖:

它跟自旋鎖類似,不同的是競選失敗線程會回去睡覺,直到鎖可用來競爭。一直進(jìn)行循環(huán)等。

1.7 樂觀鎖:

很常見的樂觀鎖的例子是在數(shù)據(jù)庫的數(shù)據(jù)操作中,直到提交更新的時候才給相關(guān)的數(shù)據(jù)行加鎖。

1.8 悲觀鎖:

悲觀鎖就是如果一個事務(wù)操作用了鎖,那只有當(dāng)這個事務(wù)把鎖釋放(把媽媽給釋放),其他事務(wù)才能夠執(zhí)行與該鎖沖突的操作。

1.9 時間片分配算法:

CPU通過給每個線程分配CPU時間來實現(xiàn)任務(wù)運行,這個時間片一般是幾十毫秒。這樣不停地來回切換任務(wù),運行程序,劃分時間片,就叫做:時間片分配算法。

2.線程池配置介紹:

因為線程池的設(shè)置肯定是跟著服務(wù)器硬件和業(yè)務(wù)處理走的,所以不通場景下配置是不一樣的。場景假設(shè):

key值 配置值 備注
tasks(系統(tǒng)每秒任務(wù)數(shù)) 每秒的任務(wù)數(shù),假設(shè)為100~1000  
taskcost(執(zhí)行任務(wù)花的時間) 每個任務(wù)花費時間,假設(shè)為0.1s  
responsetime (允許響應(yīng)的最大時間) 系統(tǒng)允許容忍的最大響應(yīng)時間,假設(shè)為1s  

計算公式:

設(shè)置key值 計算公式 備注
核心線程數(shù)設(shè)置(corePoolSize) threadcount = tasks/(1/taskcost) =tasks*taskcost = (200~1000)*0.1 = 20~100 個線程 corePoolSize設(shè)置應(yīng)該大于20 根據(jù)8020原則,如果80%的每秒任務(wù)數(shù)小于200,那么corePoolSize設(shè)置為20即可
隊列數(shù)設(shè)置(queueCapacity) 計算可得 queueCapacity = 20/0.1*1 = 200 意思是隊列里的線程可以等待1s,超過了的需要新開線程來執(zhí)行 切記不能設(shè)置為Integer.MAX_VALUE,這樣隊列會很大,線程數(shù)只會保持在corePoolSize大小,當(dāng)任務(wù)陡增時,不能新開線程來執(zhí)行,響應(yīng)時間會隨之陡增
最大線程數(shù)設(shè)置(maxPoolSize) 計算可得 maxPoolSize = (1000-200)/10 = 80 (最大任務(wù)數(shù)-隊列容量)/每個線程每秒
3.總結(jié):

多線程的使用場景是多個任務(wù)執(zhí)行,但是CPU處理時間不長,占用的時間片不高,那么多線程會很大的提升性能,相反,多線程還沒有單線程快。SpringBoot中比較重要的線程池的概念三個:核心線程數(shù)、隊列數(shù)、最大線程數(shù)。當(dāng)任務(wù)來臨的時候如果corePoolSize 沒有達(dá)到那么會創(chuàng)建新的線程執(zhí)行任務(wù)直到corePoolSize 達(dá)到設(shè)定值的時候開始進(jìn)入到隊列中,隊列滿了以后開始創(chuàng)建新的線程直到最大線程maxPoolSize 的設(shè)置值,全部滿的時候開始執(zhí)行設(shè)置的拒絕策略。

原文鏈接:https://mp.weixin.qq.com/s/JHLq4wXJDHXQ3pFSi3Y7yw

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美一级无毛 | 国产一区二区三区手机在线 | 午夜噜噜噜 | 羞羞视频免费观看网站 | 男人的天堂视频网站 | 久久久久免费精品 | a级毛片免费观看在线播放 日本aaa一级片 | 欧美日韩网站在线观看 | 久久国产不卡 | 99精品视频99 | 国产精品久久久久久影视 | 55夜色66夜色国产精品视频 | 免费黄色小网站 | 中文字幕在线网站 | 请播放一级毛片 | 操操操操操 | 一本免费视频 | 成人免费自拍视频 | 97超级碰碰人国产在线观看 | 欧美日韩一| 欧美 国产 综合 | 久久精品一二三区 | 九九热精品视频在线 | 好吊色欧美一区二区三区四区 | 久久久精彩 | 91久久一区| 成人黄视频在线观看 | 毛片a片免费看 | 欧美人成在线 | 99riav视频一区二区 | 免费国产在线观看 | 欧美日韩国产中文字幕 | 精品一区二区三区免费看 | 一级大黄毛片 | 精品一区二区三区免费看 | 国产午夜三级一区二区三桃花影视 | 欧美成人小视频 | 久久精品亚洲一区二区 | 午夜精品在线视频 | 久久亚洲网 | 欧美一级片免费在线观看 |