1. 線程池的主要作用
線程池主要是控制運(yùn)行的線程的數(shù)量,處理過程中將任務(wù)放入隊(duì)列,然后在線程創(chuàng)建后啟動這些任務(wù),如果線程數(shù)量超過了最大數(shù)量,超出數(shù)量的線程排隊(duì)等候,等其他線程執(zhí)行完畢,再從隊(duì)列中取出任務(wù)來執(zhí)行。
2. Java線程的創(chuàng)建非常昂貴
Java線程的創(chuàng)建非常昂貴,需要JVM和OS(操作系統(tǒng))配合完成大量的工作:
(1)必須為線程堆棧分配和初始化大量內(nèi)存塊,其中包含至少1MB的棧內(nèi)存。
(2)需要進(jìn)行系統(tǒng)調(diào)用,以便在OS(操作系統(tǒng))中創(chuàng)建和注冊本地線程。
由于創(chuàng)建線程和銷毀線程的代價比較高,為了避免銷毀和創(chuàng)建時帶來的性能損耗,所以我們使用線程將其緩存起來。
Java高并發(fā)應(yīng)用頻繁創(chuàng)建和銷毀線程的操作是非常低效的,而且是不被編程規(guī)范所允許的。
3. 降低Java線程的創(chuàng)建成本的方法
必須使用到線程池。
線程池主要解決了以下兩個問題:
(1)提升性能:線程池能獨(dú)立負(fù)責(zé)線程的創(chuàng)建、維護(hù)和分配。在執(zhí)行大量異步任務(wù)時,可以不需要自己創(chuàng)建線程,而是將任務(wù)交給線程池去調(diào)度。線程池能盡可能使用空閑的線程去執(zhí)行異步任務(wù),最大限度地對已經(jīng)創(chuàng)建的線程進(jìn)行復(fù)用,使得性能提升明顯。
(2)線程管理:每個java線程池會保持一些基本的線程統(tǒng)計(jì)信息,例如完成的任務(wù)數(shù)量、空閑時間等,以便對線程進(jìn)行有效管理,使得能對所接收到的異步任務(wù)進(jìn)行高效調(diào)度。文章來源:http://www.zghlxwxcb.cn/news/detail-407608.html
參考資料:文章來源地址http://www.zghlxwxcb.cn/news/detail-407608.html
- 為什么要使用線程池?
- 【Java面試必問】【多線程開發(fā)必用JUC】學(xué)姐帶你學(xué)Java并發(fā)包-JUC
到了這里,關(guān)于為什么要使用線程池的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!