中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java線程池參數的含義是什么

發布時間:2022-03-10 12:32:36 來源:億速云 閱讀:157 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關Java線程池參數的含義是什么的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

java多線程開發時,常常用到線程池技術,這篇文章是對創建java線程池時的七個參數的詳細解釋。

Java線程池參數的含義是什么

從源碼中可以看出,線程池的構造函數有7個參數

這 7 個參數分別是:

  • corePoolSize:核心線程數。

  • maximumPoolSize:最大線程數。

  • keepAliveTime:空閑線程存活時間。

  • TimeUnit:時間單位。

  • BlockingQueue:線程池任務隊列。

  • ThreadFactory:創建線程的工廠。

  • RejectedExecutionHandler:拒絕策略。

下面會對這7個參數一一解釋。

一、corePoolSize 線程池核心線程大小

線程池中會維護一個最小的線程數量,即使這些線程處理空閑狀態,他們也不會被銷毀,除非設置了allowCoreThreadTimeOut。這里的最小線程數量即是corePoolSize。

二、maximumPoolSize 線程池最大線程數量

一個任務被提交到線程池以后,首先會找有沒有空閑存活線程,如果有則直接將任務交給這個空閑線程來執行,如果沒有則會緩存到工作隊列(后面會介紹)中,如果工作隊列滿了,才會創建一個新線程,然后從工作隊列的頭部取出一個任務交由新線程來處理,而將剛提交的任務放入工作隊列尾部。線程池不會無限制的去創建新線程,它會有一個最大線程數量的限制,這個數量即由maximunPoolSize指定。

三、keepAliveTime 空閑線程存活時間

一個線程如果處于空閑狀態,并且當前的線程數量大于corePoolSize,那么在指定時間后,這個空閑線程會被銷毀,這里的指定時間由keepAliveTime來設定

四、unit 空閑線程存活時間單位

keepAliveTime的計量單位

五、workQueue 工作隊列

新任務被提交后,會先進入到此工作隊列中,任務調度時再從隊列中取出任務。jdk中提供了四種工作隊列:

①ArrayBlockingQueue

基于數組的有界阻塞隊列,按FIFO排序。新任務進來后,會放到該隊列的隊尾,有界的數組可以防止資源耗盡問題。當線程池中線程數量達到corePoolSize后,再有新任務進來,則會將任務放入該隊列的隊尾,等待被調度。如果隊列已經是滿的,則創建一個新線程,如果線程數量已經達到maxPoolSize,則會執行拒絕策略。

②LinkedBlockingQuene

基于鏈表的無界阻塞隊列(其實最大容量為Interger.MAX),按照FIFO排序。由于該隊列的近似無界性,當線程池中線程數量達到corePoolSize后,再有新任務進來,會一直存入該隊列,而不會去創建新線程直到maxPoolSize,因此使用該工作隊列時,參數maxPoolSize其實是不起作用的。

③SynchronousQuene

一個不緩存任務的阻塞隊列,生產者放入一個任務必須等到消費者取出這個任務。也就是說新任務進來時,不會緩存,而是直接被調度執行該任務,如果沒有可用線程,則創建新線程,如果線程數量達到maxPoolSize,則執行拒絕策略。

④PriorityBlockingQueue

具有優先級的無界阻塞隊列,優先級通過參數Comparator實現。

六、threadFactory 線程工廠

創建一個新線程時使用的工廠,可以用來設定線程名、是否為daemon線程等等

七、handler 拒絕策略

當工作隊列中的任務已到達最大限制,并且線程池中的線程數量也達到最大限制,這時如果有新任務提交進來,該如何處理呢。這里的拒絕策略,就是解決這個問題的,jdk中提供了4中拒絕策略:

①CallerRunsPolicy

該策略下,在調用者線程中直接執行被拒絕任務的run方法,除非線程池已經shutdown,則直接拋棄任務。

Java線程池參數的含義是什么

②AbortPolicy

該策略下,直接丟棄任務,并拋出RejectedExecutionException異常。

Java線程池參數的含義是什么

③DiscardPolicy

該策略下,直接丟棄任務,什么都不做。

Java線程池參數的含義是什么

④DiscardOldestPolicy

該策略下,拋棄進入隊列最早的那個任務,然后嘗試把這次拒絕的任務放入隊列

Java線程池參數的含義是什么

感謝各位的閱讀!關于“Java線程池參數的含義是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

肇州县| 陕西省| 定兴县| 江永县| 浏阳市| 古丈县| 乐清市| 东乌珠穆沁旗| 通海县| 颍上县| 应用必备| 巴南区| 林甸县| 贺州市| 新竹市| 集贤县| 桐柏县| 石嘴山市| 上蔡县| 万盛区| 博湖县| 余姚市| 鹤山市| 泾阳县| 精河县| 宁强县| 谷城县| 桦南县| 屏边| 玉溪市| 壤塘县| 元氏县| 惠水县| 大邑县| 丰县| 兰坪| 郯城县| 怀来县| 嘉鱼县| 安平县| 新乡县|