四種線程池及線程池參數(shù)蛤迎、拒絕策略詳解

多線程的優(yōu)勢:發(fā)揮多核CPU的優(yōu)勢席揽;防止阻塞屡限;便于建模

實(shí)現(xiàn)多線程的方式:1.繼承thread類;2實(shí)現(xiàn)runable接口磁浇;3.使用callable和future;4.使用線程池

優(yōu)缺點(diǎn):Java是單一繼承朽褪,但是可以多實(shí)現(xiàn)置吓,runable無法回值无虚,callable可以返回一個future對象,通過get()方法獲取返回值衍锚。

sleep和wait的區(qū)別:sleep是線程類的方法友题,wait是object的方法。線程進(jìn)入sleep狀態(tài)后不會釋放鎖資源构拳,超時(shí)后自動喚醒并爭奪CPU資源咆爽;wait方法會釋放鎖資源,線程進(jìn)入等待隊(duì)列中置森,需要調(diào)用notify或者notifyAll方法喚醒線程斗埂,喚醒后線程將有機(jī)會爭奪CPU資源;調(diào)用sleep方法需要捕獲異常凫海,wait方法需要放在同步方法或者同步代碼塊中使用呛凶。

常用4種線程池:

1.catchThreadPool:無需指定線程池大小,特點(diǎn)是可以對空閑的線程進(jìn)行回收行贪。

2.fixedThreadPool:指定線程池大小漾稀,當(dāng)未超過線程池大小時(shí),會創(chuàng)建新的線程建瘫,否則不會創(chuàng)建線程崭捍。

3.scheduleThreadPool:指定線程池大小,可以延時(shí)或者周期性執(zhí)行任務(wù)啰脚。

4.singleThreadExcutor:單一線程池殷蛇,線程是阻塞的。

線程池的核心參數(shù):


corePoolSize:核心線程數(shù)橄浓,也是線程池中最小線程數(shù)粒梦,線程池會對空閑的線程進(jìn)行回收,但保留下來的線程數(shù)不會小于corePoolSize荸实。

maximumPoolSize:最大線程數(shù)匀们,當(dāng)線程數(shù)超多corePoolSize時(shí),會創(chuàng)建新的線程准给,但線程的總數(shù)不會超過最大線程數(shù)泄朴。

keepAliveTime:空閑線程的存活時(shí)間。

unit:空閑線程存活的時(shí)間單位露氮。

workQueue:等待隊(duì)列叼旋。當(dāng)線程池超過corePoolSize時(shí),新的任務(wù)會被丟進(jìn)隊(duì)列沦辙,在不超過maximumPoolSize時(shí)夫植,會創(chuàng)建新的線程,然后從隊(duì)列中獲取任務(wù)執(zhí)行。

隊(duì)列的類型有四種:

1.ArrayBlockingQueue:有邊界的數(shù)組阻塞隊(duì)列详民,F(xiàn)IFO(先進(jìn)先出)延欠,當(dāng)超過邊界時(shí),則執(zhí)行相應(yīng)的拒絕策略沈跨。

2.LinkedBlockingQuene:無邊界的阻塞隊(duì)列由捎,當(dāng)超過corePoolSize時(shí),會一直創(chuàng)建線程饿凛,然后再從隊(duì)列中執(zhí)行任務(wù)狞玛,相當(dāng)于maximumPoolSize無效。

3.SynchronousQuene:無緩存隊(duì)列涧窒,生產(chǎn)者產(chǎn)生一個任務(wù)到隊(duì)列心肪,必須有一個任務(wù)從隊(duì)列中被執(zhí)行,也就是說新的任務(wù)進(jìn)來時(shí)纠吴,會創(chuàng)建線程來執(zhí)行硬鞍,當(dāng)線程數(shù)超過maximumPoolSize時(shí),執(zhí)行拒絕策略戴已。

4.PriorityBlockingQueue:具有優(yōu)先級的無邊界隊(duì)列固该,根據(jù)參數(shù)comparator實(shí)現(xiàn)。

threadFactory:線程工廠糖儡。

Handler:決絕策略伐坏。
四種決絕策略:

1.AbortPolicy:新的任務(wù)會直接被丟棄,并拋出異常握联。

2.DiscardPolicy:直接丟棄桦沉,不做任何處理。

3.DiscardOldestPolicy:拋棄最早的任務(wù)拴疤,把新的任務(wù)放入隊(duì)列。

4.CallerRunsPolicy:在調(diào)用者的線程中執(zhí)行run方法独泞。

使用線程池的優(yōu)勢:創(chuàng)建線程是很耗性能的呐矾,過多的線程會造成CPU的過度切換,線程池可以很好的控制最大并發(fā)數(shù)懦砂,對線程進(jìn)行有效的管理蜒犯,另外還可以延時(shí)或者周期性執(zhí)行任務(wù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末荞膘,一起剝皮案震驚了整個濱河市罚随,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌羽资,老刑警劉巖淘菩,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡潮改,警方通過查閱死者的電腦和手機(jī)狭郑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來汇在,“玉大人翰萨,你說我怎么就攤上這事「庋常” “怎么了亩鬼?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長阿蝶。 經(jīng)常有香客問我雳锋,道長,這世上最難降的妖魔是什么赡磅? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任魄缚,我火速辦了婚禮,結(jié)果婚禮上焚廊,老公的妹妹穿的比我還像新娘冶匹。我一直安慰自己,他們只是感情好咆瘟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布嚼隘。 她就那樣靜靜地躺著,像睡著了一般袒餐。 火紅的嫁衣襯著肌膚如雪飞蛹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天灸眼,我揣著相機(jī)與錄音卧檐,去河邊找鬼。 笑死焰宣,一個胖子當(dāng)著我的面吹牛霉囚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播匕积,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼盈罐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了闪唆?” 一聲冷哼從身側(cè)響起盅粪,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎悄蕾,沒想到半個月后票顾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年库物,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了霸旗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡戚揭,死狀恐怖诱告,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情民晒,我是刑警寧澤精居,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站潜必,受9級特大地震影響靴姿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜磁滚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一佛吓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧垂攘,春花似錦维雇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至陨仅,卻和暖如春津滞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背灼伤。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工触徐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人狐赡。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓撞鹉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親猾警。 傳聞我的和親對象是個殘疾皇子孔祸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容