Maximumpoolsize:大線程數(shù)。
成都創(chuàng)新互聯(lián)專業(yè)提供成都主機托管四川主機托管成都服務(wù)器托管四川服務(wù)器托管,支持按月付款!我們的承諾:貴族品質(zhì)、平民價格,機房位于中國電信/網(wǎng)通/移動機房,南充服務(wù)器托管服務(wù)有保障!Keepalivetime:空閑線程的保留時間。
Timeunit:空閑線程保留時間的單位。
阻塞隊列<runnable>:阻塞隊列以存儲等待執(zhí)行的任務(wù)。
Threadfactory:用于創(chuàng)建線程的線程工廠。
Rejectedexecutionhandler:隊列已滿且任務(wù)量大于大線程數(shù)時的異常處理策略。
如何優(yōu)雅的使用和理解線程池?你怎么看?要理解和使用好java線程池,需要掌握并發(fā)編程的基本知識,認真閱讀和學習線程池API的所有官方文檔。合理使用線程池的要點總結(jié)如下:1。例如,您希望將同步API更改為異步,還是希望同時請求多個外部服務(wù),或者減少線程的創(chuàng)建和銷毀以處理用戶請求。
2.根據(jù)您的實際項目需求,配置線程池的參數(shù),包括corepoolsize、maximumpoolsize、blockingqueue、keepalivetime、threadfactory和saturationpolicy(或rejectedexecutionhandler)。
3.根據(jù)應(yīng)用程序的特點部署線程池。一些后臺服務(wù)應(yīng)用程序適合在啟動時創(chuàng)建線程池,并且在應(yīng)用程序執(zhí)行期間不修改線程池。有時,應(yīng)用程序適合臨時創(chuàng)建線程池,將任務(wù)提交給它,并在使用后立即銷毀它。
4.當您決定不再使用線程池時,應(yīng)該調(diào)用shutdown()來正常關(guān)閉線程池。Shutdown可以保證以前提交到線程池的任務(wù)不會被丟棄,保證了數(shù)據(jù)的安全性。
5.調(diào)用shutdown后,線程池此時可能正在執(zhí)行任務(wù),但提交任務(wù)的條目被關(guān)閉。如果需要等待線程池完全終止,則需要調(diào)用waitterminate以等待線程池處理隊列中的所有任務(wù)并清理它們,然后返回。Awaitterminate成功返回,線程池被徹底清理。
總之,線程池按創(chuàng)建(構(gòu)造方法)、提交任務(wù)(執(zhí)行)、關(guān)閉和等待清理結(jié)束(等待終止)的順序調(diào)用API。只有這樣,我們才能優(yōu)雅地使用線程池。為了更好地利用java線程池并大限度地提高優(yōu)化程序的性能,您可以參考我官方帳戶中的分析文章。
線程池處理流程是什么?任務(wù)提交后,線程池首先確定線程數(shù)是否達到核心池大小。如果未達到線程數(shù),則創(chuàng)建一個核心線程來處理任務(wù);否則,執(zhí)行下一步;
然后線程池判斷任務(wù)隊列是否已滿。如果沒有,則將任務(wù)添加到任務(wù)隊列;否則,執(zhí)行下一步;
然后,由于任務(wù)隊列已滿,線程池將判斷線程數(shù)是否達到大值。否則,將創(chuàng)建一個非核心線程來處理該任務(wù);否則,將執(zhí)行飽和策略,并在默認情況下引發(fā)rejectedexecutionexception異常。