keepalivetime設(shè)置多大 線程池的五個(gè)參數(shù)?
線程池的五個(gè)參數(shù)?Corepollsize:核心線程數(shù)。Maximumpoolsize:最大線程數(shù)。Keepalivetime:空閑線程的保留時(shí)間。Timeunit:空閑線程保留時(shí)間的單位。阻塞隊(duì)列&
線程池的五個(gè)參數(shù)?
Corepollsize:核心線程數(shù)。
Maximumpoolsize:最大線程數(shù)。
Keepalivetime:空閑線程的保留時(shí)間。
Timeunit:空閑線程保留時(shí)間的單位。
阻塞隊(duì)列<runnable>:阻塞隊(duì)列以存儲(chǔ)等待執(zhí)行的任務(wù)。
Threadfactory:用于創(chuàng)建線程的線程工廠。
Rejectedexecutionhandler:隊(duì)列已滿且任務(wù)量大于最大線程數(shù)時(shí)的異常處理策略。
如何優(yōu)雅的使用和理解線程池?你怎么看?
要理解和使用好java線程池,需要掌握并發(fā)編程的基本知識(shí),認(rèn)真閱讀和學(xué)習(xí)線程池API的所有官方文檔。合理使用線程池的要點(diǎn)總結(jié)如下:1。例如,您希望將同步API更改為異步,還是希望同時(shí)請求多個(gè)外部服務(wù),或者減少線程的創(chuàng)建和銷毀以處理用戶請求。
2. 根據(jù)您的實(shí)際項(xiàng)目需求,配置線程池的參數(shù),包括corepoolsize、maximumpoolsize、blocking queue、keepalivetime、thread factory和saturation policy(或rejectedexecutionhandler)。
3. 根據(jù)應(yīng)用程序的特點(diǎn)部署線程池。一些后臺(tái)服務(wù)應(yīng)用程序適合在啟動(dòng)時(shí)創(chuàng)建線程池,并且在應(yīng)用程序執(zhí)行期間不修改線程池。有時(shí),應(yīng)用程序適合臨時(shí)創(chuàng)建線程池,將任務(wù)提交給它,并在使用后立即銷毀它。
4. 當(dāng)您決定不再使用線程池時(shí),應(yīng)該調(diào)用shutdown()來正常關(guān)閉線程池。Shutdown可以保證以前提交到線程池的任務(wù)不會(huì)被丟棄,保證了數(shù)據(jù)的安全性。
5. 調(diào)用shutdown后,線程池此時(shí)可能正在執(zhí)行任務(wù),但提交任務(wù)的條目被關(guān)閉。如果需要等待線程池完全終止,則需要調(diào)用waitterminate以等待線程池處理隊(duì)列中的所有任務(wù)并清理它們,然后返回。Awaitterminate成功返回,線程池被徹底清理。
總之,線程池按創(chuàng)建(構(gòu)造方法)、提交任務(wù)(執(zhí)行)、關(guān)閉和等待清理結(jié)束(等待終止)的順序調(diào)用API。只有這樣,我們才能優(yōu)雅地使用線程池。為了更好地利用java線程池并最大限度地提高優(yōu)化程序的性能,您可以參考我官方帳戶中的分析文章。