java線程池(簡單實現(xiàn))

什么是線程池:

  • 為了避免系統(tǒng)頻繁的創(chuàng)建和銷毀線程迹冤,我們可以讓創(chuàng)建的線程進行復用。在線程池中虎忌,總有那么幾個活躍線程泡徙,當你需要使用線程時,可以從池子中隨便拿一個空閑線程膜蠢,當你完成工作時堪藐,并不著急關(guān)閉線程,而是將這個線程退回到池子挑围,方便其他人使用礁竞。

java中的線程池是運用場景最多的并發(fā)框架,合理的使用線程池能夠帶來的3個好處:

  • 第一:降低資源消耗贪惹;
  • 第二:提高響應速度:
  • 第三:提高線程的可管理性苏章;

為了更好的控制多線程,JDK提供了一套Executor框架奏瞬,幫助開發(fā)人員進行線程控制枫绅,其本質(zhì)就是一個線程池。

如圖:


這里寫圖片描述
  • 以上成員均在java.util.concurrent包中硼端,是JDK并發(fā)包的核心類并淋。其中ThreadPoolExecutor表示一個線程池。Executors類扮演著線程池工廠的角色珍昨,通過Executors可以取得一個擁有特定功能的線程池县耽。
    ThreadPoolExecutor類實現(xiàn)Executor接口,因此通過這個接口镣典,任何Runnable的對象都可以被ThreadPoolExecutor線程池調(diào)度兔毙。

Executor框架提供了各種類型的線程池,以下有四種常用的工廠方法

  1. newFixedThreadPool()方法:該方法返回一個固定線程數(shù)量的線程池兄春。它適用于負載比較重的服務器澎剥。
  2. newSingleThreadExecutor()方法:該方法返回一個只有一個線程的線程池。適用于需要保證順序地執(zhí)行各個任務赶舆,并且在任意時間點哑姚,不會有多個線程是活動的應用場景。
  3. newCachedThreadPool()方法:該方法返回一個可根據(jù)實際情況調(diào)整線程數(shù)量的線程池芜茵。適用于執(zhí)行很多的短期異步任務的小程序叙量,或是負載較輕的服務器。
  4. newSingleThreadScheduledExecutor()方法:該方法返回一個ScheduledExecutorService對象九串,線程池大小為1.適用于需要單個后臺線程執(zhí)行周期任務绞佩,同時保證順序地執(zhí)行各個任務的應用場景。

線程池的使用:

  • 通過ThreadPoolExecutor來創(chuàng)建一個線程池;
  • 可以使用兩個方法向線程池提交任務:execute()和submit();
    execute()方法用于提交不需要返回值的任務征炼;
    submit()方法用于提交需要返回值的任務析既。
  • 可以通過線程池的shutdown或shutdownNow方法來關(guān)閉線程池。
    shutdownNow嘗試停止正在執(zhí)行或暫停任務的線程谆奥;
    shutdown只是將線程池的狀態(tài)設(shè)置為SHUTDOWN狀態(tài)眼坏,然后中斷所有沒有正在執(zhí)行任務的線程。

以下通過一段代碼來展示線程池的應用:


import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ThreadPoolTest {
    public static void main(String[] args) {
        ExecutorService threadPool = Executors.newFixedThreadPool(3);
        for(int i=1;i<=10;i++) {
            final int task = i;
            threadPool.execute(new Runnable() {
                
                @Override
                public void run() {
                    for(int j=1;j<=10;j++) {
                        try {
                            Thread.sleep(20);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        System.out.println(Thread.currentThread().getName()+"loop of" +j +"for task of"+ task);
                    }
                }
            });
        }
        System.out.println("game over");
        threadPool.shutdown();
    }
}

以上就是一個簡單的小實例酸些,非常適合新手學習線程池宰译,其實線程池的實例還有好多,想多了解的可以在網(wǎng)上找到一大堆的資料以及源碼魄懂,這里菲菲同學就不舉例了沿侈,(因為我有好多點都不太懂呢,學習完全處于懵懂狀態(tài))我知道現(xiàn)在我寫的東西特別的膚淺市栗,如果大神們看到覺得特別幼稚的話缀拭,千萬不要打擊我哦。我會一步一步改進這些東西的填帽。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蛛淋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子篡腌,更是在濱河造成了極大的恐慌褐荷,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嘹悼,死亡現(xiàn)場離奇詭異叛甫,居然都是意外死亡,警方通過查閱死者的電腦和手機杨伙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門其监,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人限匣,你說我怎么就攤上這事抖苦。” “怎么了膛腐?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵睛约,是天一觀的道長鼎俘。 經(jīng)常有香客問我哲身,道長,這世上最難降的妖魔是什么贸伐? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任勘天,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脯丝。我一直安慰自己商膊,他們只是感情好,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布宠进。 她就那樣靜靜地躺著晕拆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪材蹬。 梳的紋絲不亂的頭發(fā)上实幕,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音堤器,去河邊找鬼昆庇。 笑死,一個胖子當著我的面吹牛闸溃,可吹牛的內(nèi)容都是我干的整吆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辉川,長吁一口氣:“原來是場噩夢啊……” “哼表蝙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起员串,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤勇哗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后寸齐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體欲诺,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年渺鹦,在試婚紗的時候發(fā)現(xiàn)自己被綠了扰法。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡毅厚,死狀恐怖塞颁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吸耿,我是刑警寧澤祠锣,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站咽安,受9級特大地震影響伴网,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜妆棒,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一澡腾、第九天 我趴在偏房一處隱蔽的房頂上張望沸伏。 院中可真熱鬧,春花似錦动分、人聲如沸毅糟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽姆另。三九已至,卻和暖如春坟乾,著一層夾襖步出監(jiān)牢的瞬間蜕青,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工糊渊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留右核,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓渺绒,卻偏偏與公主長得像贺喝,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宗兼,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

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