免费爱碰视频在线观看,九九精品国产屋,欧美亚洲尤物久久精品,1024在线观看视频亚洲

      Java多線程配置知識點

      線程在現(xiàn)在工作中出現(xiàn)越來越頻繁、需要我們熟記并且能熟練地使用之、對相關(guān)線程池的一些配置需要我們非常熟悉。

      1. 參數(shù)詳解

      1.1 corePoolSize

      corePoolSize 核心線程數(shù)

      – 核心線程會一直存活,即使沒有任務(wù)需要執(zhí)行- 當線程數(shù)小于核心線程數(shù)時,即使有線程空閑,線程池也會優(yōu)先創(chuàng)建新線程處理- 設(shè)置allowCoreThreadTimeOut=true(默認false)時,核心線程會超時關(guān)閉

      1.2 queueCapacity

      queueCapacity 任務(wù)隊列容量(阻塞隊列)

      • 當核心線程數(shù)達到最大時,新任務(wù)會放在隊列中排隊等待

      1.3 maxPoolSize

      maxPoolSize 最大線程數(shù)

      – 當線程數(shù) >= corePoolSize 且任務(wù)隊列已滿時,線程池會創(chuàng)建新線程來處理任務(wù)- 當線程數(shù) = maxPoolSize且任務(wù)隊列已滿時,線程池會拒絕處理任務(wù)而拋出異常

      1.4 keepAliveTime

      keepAliveTime 線程空閑時間

      – 當線程空閑時間達到keepAliveTime時,線程會退出,直到線程數(shù)量=coolPoolSize- 如果allowCoreThreadTimeOut=true時,則會直到線程數(shù)量=0

      1.5 allowCoreThreadTimeOut

      allowCoreThreadTimeOut 允許核心線程超時

      1.6 rejectedExecutionHandler

      rejectedExecutionHandler 任務(wù)拒絕處理器

      • 兩種情況會拒絕處理任務(wù)
      • 當線程數(shù)已經(jīng)達到maxPoolSize且任務(wù)隊列已滿,就會拒絕新的任務(wù)
      • 當線程池被調(diào)運shutdown() 然后,會等待線程池里的任務(wù)執(zhí)行完畢在shutdown。如果在調(diào)運shutdown() 和線程池真正shutdown之間提交的任務(wù),會拒絕新的任務(wù)
      • 線程池會調(diào)運rejectedExecutionHandler來處理這個任務(wù),如果沒有設(shè)置默認是AbortPolicy,會拋出異常

      – ThreadPoolExecutor類有幾個內(nèi)部實現(xiàn)類來處理這類情況 1. **AbortPolicy** 丟棄任務(wù)、拋運行時異常 1. **CallerRunsPolicy** 執(zhí)行任務(wù) 1. **DisCardPolicy** 忽視,什么都不會發(fā)生 1. **DisCardOldestPolicy** 從隊列中提出最先 進入隊列(最后一個執(zhí)行)的任務(wù)

      • 實現(xiàn)RejectedExecutionHandler接口,可自定義處理器

      2. ThreadPoolExecutor 執(zhí)行順序

      線程池按照以下行為執(zhí)行任務(wù)

      1. 當線程數(shù) = 核心線程數(shù),且任務(wù)隊列未滿時,將任務(wù)放入任務(wù)隊列。3. 當線程數(shù) >= 核心線程數(shù),且任務(wù)隊列已滿- 若線程數(shù) < 最大線程數(shù),創(chuàng)建線程- 若線程數(shù) = 最大線程數(shù),拋出異常,拒絕任務(wù)

      3. 如何設(shè)置參數(shù)

      3.1 默認值

      corePoolSize = 1queueCapacity = Integer.MAX_VALUEmaxPoolSize = Integer.MAX_VALUEkeepAliveTime = 60sallowCoreThreadTimeOut = falserejectedExecutionHandler = AbortPolicy

      3.2 如何來設(shè)置

      • 需要根據(jù)幾個值來決定

      tasks : 每秒的任務(wù)數(shù),假設(shè)為 500 – 1000taskcost : 每個任務(wù)花費時間,假設(shè)為0.1sresponsetime : 系統(tǒng)允許容忍的最大響應(yīng)時間,假設(shè)為1s

      • 計算方式

      corePoolSize = 每秒需要多少個線程處理 * threadcount = tasks/(1/taskcost) =tasks*taskcout = (500~1000)*0.1 = 50~100 個線程。corePoolSize設(shè)置應(yīng)該大于50 * 根據(jù)8020原則,如果80%的每秒任務(wù)數(shù)小于800,那么corePoolSize設(shè)置為80即可queueCapacity = (coreSizePool/taskcost)*responsetime * 計算可得 queueCapacity = 80/0.1*1 = 80。意思是隊列里的線程可以等待1s,超過了的需要新開線程來執(zhí)行 * 切記不能設(shè)置為Integer.MAX_VALUE,這樣隊列會很大,線程數(shù)只會保持在corePoolSize大小,當任務(wù)陡增時,不能新開線程來執(zhí)行,響應(yīng)時間會隨之陡增。maxPoolSize = (max(tasks)- queueCapacity)/(1/taskcost) * 計算可得 maxPoolSize = (1000-80)/10 = 92 * (最大任務(wù)數(shù)-隊列容量)/每個線程每秒處理能力 = 最大線程數(shù)rejectedExecutionHandler:根據(jù)具體情況來決定,任務(wù)不重要可丟棄,任務(wù)重要則要利用一些緩沖機制來處理keepAliveTime和allowCoreThreadTimeout采用默認通常能滿足

      4. 使用案例

      @Componentpublic class KafkaReceiver { @Autowired private BroadbandService broadbandService; private ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() .setNameFormat(“deal-pool-%d”) .build(); private ExecutorService threadPool = new ThreadPoolExecutor(10, 20, 5, TimeUnit.SECONDS, new LinkedBlockingQueue(10), namedThreadFactory, new ThreadPoolExecutor.CallerRunsPolicy()); /** * 監(jiān)聽kafka消息受理業(yè)務(wù) */ @KafkaListener(topics = “${kafka.topics[1]}”) public void listenerKafkaProductCommit(ConsumerRecord record) { threadPool.execute(() -> { try { BusinessOrder businessOrder = JsonUtil.jsonToObject(record.value(), BusinessOrder.class); log.info(“消息隊列正在工作,訂單號: {}”, businessOrder.getOrderNo()); //嘗試多線程處理 broadbandService.asynSchoolBroadbandRemoveService(businessOrder); } catch (Exception e) { log.error(“消息隊列正在工作異常”, e); } }); } }

      鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
      (0)
      用戶投稿
      上一篇 2022年7月3日 09:15
      下一篇 2022年7月3日 09:15

      相關(guān)推薦

      • 世上沒有絕對幸福的人,只有不肯快樂的心是什么意思 世上沒有絕對幸福的人,只有不肯快樂的心

        有時候,我們等的不是什么人、什么事,我們等的是時間,等時間,讓自己改變?! ?一個人愿意改變想法,事情就會有轉(zhuǎn)機,想要改變的意念愈強,勝算就愈大。 一個人心態(tài)開放,保持好奇心,不斷…

        2022年6月29日
      • 把手機放下,回到發(fā)呆的時光

        木心有一首詩里這么寫道:從前的日色變得慢,車,馬,郵件都慢,一生只夠愛一個人。其實,以前慢的不是日色,也不是車馬和郵件,而是生活節(jié)奏和人心。 在現(xiàn)代科技尚且不能發(fā)達到賦能通訊手段的…

        2022年8月18日
      • 一個加減方,三伏天除濕熱,散去一身關(guān)節(jié)痛

        以前老說冬天是骨病患者的多發(fā)季節(jié),但是現(xiàn)在雖說立秋了,但是溫度依舊是三伏天的樣子,同樣有很多患者受到骨關(guān)節(jié)問題的困擾,尤其是濕熱之癥,從而誘發(fā)關(guān)節(jié)疼痛,今天給大家舉一個臨床上的驗案…

        2022年8月23日
      • 東鵬飲料上半年勁收42.91億元,這兩款產(chǎn)品被點名表揚

        今天,東鵬飲料公布了2022年上半年財報,其中亮點頗多,食品板帶你一起看看。 1 營收42.91億元,全國化戰(zhàn)略持續(xù)推進 東鵬飲料抓住了中國能量飲料市場快速興起的機遇,在2019年…

        2022年8月16日
      • 生在紅旗下長在春風里:傍晚騎行天安門and觀升國旗儀式攻略

        生在紅旗下長在春風里:傍晚騎行天安門and觀升國旗儀式攻略 ——————“清澈的愛,只為祖國”,這是18歲的陳祥榕烈士寫下的戰(zhàn)斗口號。同時,也是數(shù)萬萬中國人愛中國,敬祖國,親國家的…

        2022年8月15日
      • 江南百景圖名貴珍珠怎么獲得?江南百景圖名貴珍珠獲取方法

        江南百景圖名貴珍珠獲取途徑有哪些?在紹興府開啟之后,大家可以去獲得名貴珍珠,名貴珍珠在新版本中的作用是很大的,獲取的方法也有好幾種,小編這就把全部獲取名貴珍珠的途徑分享在下面的攻略…

        2022年9月30日
      • 三個寶媽的不同選擇

        生涯決策就是個人在多項選擇之間權(quán)衡利弊,以達成最大價值的歷程?!渡男睦磔o導》 來看看三個寶媽的不同選擇。 婷婷,39歲,博士即將畢業(yè),目前在一所民辦高校任教師。兒子今年上初中…

        2022年9月6日
      • 葉間是治愈一切的良藥

        #人生中什么才是治愈一切的良藥#時間是治愈一切的良藥。孩提時代看著玩伴有心儀玩具,為自己未能擁有而難過;物質(zhì)短缺年代,為每天吃飽飯、新年穿新衣而夢寐以求;求學成長階段,羨慕那些輕松…

        2022年9月25日
      • “放棄合群后,我更快樂了”

        不知道你在生活中,是否發(fā)現(xiàn)有的人似乎不太合群。 他們不喜歡聊天,不喜歡扎堆,而是更喜歡一個人待著,沉浸在自己的世界里。 別人湊在一起聊天說笑時,他們獨自在角落里靜靜低頭玩著手機;別…

        2022年7月15日
      • 18+1TB!中興機皇發(fā)力,5500mAh+120W+144Hz,驍龍芯坐鎮(zhèn)

        對于喜歡嘗鮮的用戶而言,智能手機廠商的冒進是值得鼓勵和肯定的,更何況是中興通訊這樣一家一向因為太過穩(wěn)重低調(diào)而導致存在感不足的廠商,冒進的信號展現(xiàn)的是進取的決心。 一直以來,中興通訊…

        2022年8月17日

      聯(lián)系我們

      聯(lián)系郵箱:admin#wlmqw.com
      工作時間:周一至周五,10:30-18:30,節(jié)假日休息