關於守護線程與線程池的關閉(shutdown)


在編寫多線程代碼時,我們時常會用到線程池,以提高效率。那么線程池用完需不需要關閉呢?

如果是局部變量(即一次性使用),用完是要關閉的,否者大量的線程資源占用,會導致內存泄漏。

如果不想手動關閉,可以把線程池里的線程設為守護線程:

thread.setDaemon(true);

在這里之前還遇到過一個坑,我在項目測試時發現一個功能請求一次后,下一次請求必然會超時。后來想到是線程池的問題。因為我的線程池是全局的,其實不用關閉的,但是我在使用完后用了shutdown。但是線程池里的線程又設為了守護線程,也就是說要等到jvm關閉,線程池才會關閉掉,所以后面調用時就一直超時。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM