JDK自带线程池介绍及使用环境
1、newFixedThreadPool創(chuàng)建一個(gè)指定工作線程數(shù)量的線程池。每當(dāng)提交一個(gè)任務(wù)就創(chuàng)建一個(gè)工作線程,如果工作線程數(shù)量達(dá)到線程池初始的最大數(shù),則將提交的任務(wù)存入到池隊(duì)列中。?
2、newCachedThreadPool創(chuàng)建一個(gè)可緩存的線程池。這種類型的線程池特點(diǎn)是:?
1).工作線程的創(chuàng)建數(shù)量幾乎沒有限制(其實(shí)也有限制的,數(shù)目為Interger.?MAX_VALUE),?這樣可靈活的往線程池中添加線程。?
2).如果長時(shí)間沒有往線程池中提交任務(wù),即如果工作線程空閑了指定的時(shí)間(默認(rèn)為1分鐘),則該工作線程將自動(dòng)終止。終止后,如果你又提交了新的任務(wù),則線程池重新創(chuàng)建一個(gè)工作線程。?
3、newSingleThreadExecutor創(chuàng)建一個(gè)單線程化的Executor,即只創(chuàng)建唯一的工作者線程來執(zhí)行任務(wù),如果這個(gè)線程異常結(jié)束,會(huì)有另一個(gè)取代它,保證順序執(zhí)行(我覺得這點(diǎn)是它的特色)。單工作線程最大的特點(diǎn)是可保證順序地執(zhí)行各個(gè)任務(wù),并且在任意給定的時(shí)間不會(huì)有多個(gè)線程是活動(dòng)的?。?
4、newScheduleThreadPool創(chuàng)建一個(gè)定長的線程池,而且支持定時(shí)的以及周期性的任務(wù)執(zhí)行,類似于Timer。(這種線程池原理暫還沒完全了解透徹)?
總結(jié):?
一.FixedThreadPool是一個(gè)典型且優(yōu)秀的線程池,它具有線程池提高程序效率和節(jié)省創(chuàng)建線程時(shí)所耗的開銷的優(yōu)點(diǎn)。但是,在線程池空閑時(shí),即線程池中沒有可運(yùn)行任務(wù)時(shí),它不會(huì)釋放工作線程,還會(huì)占用一定的系統(tǒng)資源。?
二.CachedThreadPool的特點(diǎn)就是在線程池空閑時(shí),即線程池中沒有可運(yùn)行任務(wù)時(shí),它會(huì)釋放工作線程,從而釋放工作線程所占用的資源。但是,但當(dāng)出現(xiàn)新任務(wù)時(shí),又要?jiǎng)?chuàng)建一新的工作線程,又要一定的系統(tǒng)開銷。并且,在使用CachedThreadPool時(shí),一定要注意控制任務(wù)的數(shù)量,否則,由于大量線程同時(shí)運(yùn)行,很有會(huì)造成系統(tǒng)癱瘓。?
在什么情況下使用線程池??
1.單個(gè)任務(wù)處理的時(shí)間比較短?
2.將需處理的任務(wù)的數(shù)量大?
使用線程池的好處:?
1.減少在創(chuàng)建和銷毀線程上所花的時(shí)間以及系統(tǒng)資源的開銷?
2.如不使用線程池,有可能造成系統(tǒng)創(chuàng)建大量線程而導(dǎo)致消耗完系統(tǒng)內(nèi)存以及”過度切換”。
?
來源:http://fengtiejun.iteye.com/blog/1616886
?
轉(zhuǎn)載于:https://www.cnblogs.com/personnel/p/4583307.html
總結(jié)
以上是生活随笔為你收集整理的JDK自带线程池介绍及使用环境的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: etc缴费怎么缴
- 下一篇: win7(旗舰版)下,OleLoadPi