線程池使用

ThreadPoolExecutor 線程池

創(chuàng)建線程池左痢,主要利用 ThreadPoolExecutor 這個(gè)類泼诱,

 public ThreadPoolExecutor(int corePoolSize,
                              int maximumPoolSize,
                              long keepAliveTime,
                              TimeUnit unit,
                              BlockingQueue<Runnable> workQueue,
                              ThreadFactory threadFactory,
                              RejectedExecutionHandler handler) {

corePoolSize: 該線程池中核心線程的數(shù)量彤枢。

注意:線程池中存在核心線程與非核心線程膘融,核心線程一旦創(chuàng)建會(huì)一直執(zhí)行任務(wù)或等待任務(wù)到來杭煎,而非核心線程只在任務(wù)隊(duì)列塞滿任務(wù)時(shí)去執(zhí)行多出的任務(wù)溉知,并且非核心線程在等待一段時(shí)間后將會(huì)被回收猖腕,這個(gè)時(shí)間作為參數(shù)可調(diào)配馋评,

maximumPoolSize:該線程池中最大線程數(shù)量诗芜。(區(qū)別于corePoolSize)

keepAliveTime:從字面上就可以理解瞳抓,是非核心線程空閑時(shí)要等待下一個(gè)任務(wù)到來的時(shí)間埃疫,當(dāng)任務(wù)很多,每個(gè)任務(wù)執(zhí)行時(shí)間很短的情況下調(diào)大該值有助于提高線程利用率挨下。
注意:當(dāng)allowCoreThreadTimeOut屬性設(shè)為true時(shí)熔恢,該屬性也可用于核心線程。

unit:上面時(shí)間屬性的單位

workQueue:任務(wù)隊(duì)列臭笆,后面詳述叙淌。

threadFactory:線程工廠,可用于設(shè)置線程名字等等愁铺,一般無須設(shè)置該參數(shù)鹰霍。

handler: 飽和策略

線程執(zhí)行流程

1.execute一個(gè)線程之后,如果線程池中的線程數(shù)未達(dá)到核心線程數(shù)茵乱,則會(huì)立馬啟用一個(gè)核心線程去執(zhí)行茂洒。

2.execute一個(gè)線程之后,如果線程池中的線程數(shù)已經(jīng)達(dá)到核心線程數(shù)瓶竭,且workQueue未滿督勺,則將新任務(wù)放入workQueue中等待執(zhí)行。

3.execute一個(gè)線程之后斤贰,如果線程池中的線程數(shù)已經(jīng)達(dá)到核心線程數(shù)但未超過非核心線程數(shù)智哀,且workQueue已滿,則開啟一個(gè)非核心線程來執(zhí)行任務(wù)荧恍。

4.execute一個(gè)線程之后瓷叫,如果線程池中的線程數(shù)已經(jīng)超過非核心線程數(shù),則拒絕執(zhí)行該任務(wù)送巡,采取飽和策略摹菠,并拋出RejectedExecutionException異常。

注意 使用 threadFactory工廠的時(shí)候骗爆,

public interface ThreadFactory {

    Thread newThread(Runnable r);
}

創(chuàng)建Thread的時(shí)候次氨,需要把runnbale對(duì)象傳遞給創(chuàng)建的thread類,
如果不傳遞的話淮腾,線程執(zhí)行的時(shí)候糟需,會(huì)運(yùn)行thread的run方法

  val threadFactory = ThreadFactory {
            val thread = Thread(it)
            thread.name = "executor-${seq.getAndIncrement()}"
            thread
        }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市谷朝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌武花,老刑警劉巖圆凰,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異体箕,居然都是意外死亡专钉,警方通過查閱死者的電腦和手機(jī)挑童,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跃须,“玉大人站叼,你說我怎么就攤上這事」矫瘢” “怎么了尽楔?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長第练。 經(jīng)常有香客問我阔馋,道長,這世上最難降的妖魔是什么娇掏? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任呕寝,我火速辦了婚禮,結(jié)果婚禮上婴梧,老公的妹妹穿的比我還像新娘下梢。我一直安慰自己,他們只是感情好塞蹭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布孽江。 她就那樣靜靜地躺著,像睡著了一般浮还。 火紅的嫁衣襯著肌膚如雪竟坛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天钧舌,我揣著相機(jī)與錄音担汤,去河邊找鬼。 笑死洼冻,一個(gè)胖子當(dāng)著我的面吹牛崭歧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播撞牢,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼率碾,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了屋彪?” 一聲冷哼從身側(cè)響起所宰,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎畜挥,沒想到半個(gè)月后仔粥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年躯泰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谭羔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡麦向,死狀恐怖瘟裸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情诵竭,我是刑警寧澤话告,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站秀撇,受9級(jí)特大地震影響超棺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜呵燕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一棠绘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧再扭,春花似錦氧苍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至罢荡,卻和暖如春赡突,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背区赵。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來泰國打工惭缰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人笼才。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓漱受,卻偏偏與公主長得像,于是被迫代替她去往敵國和親骡送。 傳聞我的和親對(duì)象是個(gè)殘疾皇子昂羡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

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

  • 線程 線程在Android中是個(gè)很重要的概念,從用途來說摔踱,線程分為主線程與子線程虐先,主線程用于處理界面相關(guān)事情,子線...
    我好芒閱讀 29,067評(píng)論 0 34
  • 個(gè)人記錄派敷,麻煩指正赴穗! 線程池的前世今生 ??答:Java1.5中引入的Executor框架把任務(wù)的提交和執(zhí)行進(jìn)行解...
    沈先生的影子閱讀 423評(píng)論 0 1
  • 線程池算是Android開發(fā)中非常常用的一個(gè)東西了,只要涉及到線程的地方膀息,大多數(shù)情況下都會(huì)涉及到線程池般眉。Andro...
    鄭在學(xué)_blog閱讀 632評(píng)論 0 1
  • 這是一篇 寫的非常用心的 博文,這里是原文地址https://blog.csdn.net/l540675759/a...
    Chauncey_Chen閱讀 1,607評(píng)論 0 45
  • 我們使用線程的時(shí)候就去創(chuàng)建一個(gè)線程,這樣實(shí)現(xiàn)起來非常簡便潜支,但是就會(huì)有一個(gè)問題:如果并發(fā)的線程數(shù)量很多甸赃,并且每個(gè)線程...
    MonkeyLqj閱讀 578評(píng)論 0 2