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