JDK提供的幾種線程池
newFixedThreadPool
創(chuàng)建一個指定工作線程數(shù)量的線程池柒巫。每當(dāng)提交一個任務(wù)就創(chuàng)建一個工作線程想虎,如果工作線程數(shù)量達(dá)到線程池初始的最大數(shù),則將提交的任務(wù)存入到池隊列中酌伊。newCachedThreadPool
創(chuàng)建一個可緩存的線程池。這種類型的線程池特點(diǎn)是:
1).工作線程的創(chuàng)建數(shù)量幾乎沒有限制(其實(shí)也有限制的,數(shù)目為Interger. MAX_VALUE), 這樣可靈活的往線程池中添加線程缀踪。
2).如果長時間沒有往線程池中提交任務(wù)居砖,即如果工作線程空閑了指定的時間(默認(rèn)為1分鐘),則該工作線程將自動終止驴娃。終止后奏候,如果你又提交了新的任務(wù),則線程池重新創(chuàng)建一個工作線程唇敞。newSingleThreadExecutor
創(chuàng)建一個單線程化的Executor蔗草,即只創(chuàng)建唯一的工作者線程來執(zhí)行任務(wù)咒彤,如果這個線程異常結(jié)束,會有另一個取代它咒精,保證順序執(zhí)行(我覺得這點(diǎn)是它的特色)蔼紧。單工作線程最大的特點(diǎn)是可保證順序地執(zhí)行各個任務(wù),并且在任意給定的時間不會有多個線程是活動的 狠轻。newScheduleThreadPool
創(chuàng)建一個定長的線程池奸例,而且支持定時的以及周期性的任務(wù)執(zhí)行,類似于Timer向楼。(這種線程池原理暫還沒完全了解透徹)
總結(jié):
FixedThreadPool
是一個典型且優(yōu)秀的線程池查吊,它具有線程池提高程序效率和節(jié)省創(chuàng)建線程時所耗的開銷的優(yōu)點(diǎn)。但是湖蜕,在線程池空閑時逻卖,即線程池中沒有可運(yùn)行任務(wù)時,它不會釋放工作線程昭抒,還會占用一定的系統(tǒng)資源评也。CachedThreadPool
特點(diǎn)是在線程池空閑時,即線程池中沒有可運(yùn)行任務(wù)時灭返,它會釋放工作線程盗迟,從而釋放工作線程所占用的資源。但是熙含,但當(dāng)出現(xiàn)新任務(wù)時罚缕,又要創(chuàng)建一新的工作線程,又要一定的系統(tǒng)開銷怎静。并且邮弹,在使用CachedThreadPool時,一定要注意控制任務(wù)的數(shù)量蚓聘,否則腌乡,由于大量線程同時運(yùn)行,很有會造成系統(tǒng)癱瘓夜牡。