ScheduledThreadPool 定時赏廓、延時任務(wù)--線程池工具類

前言:前面寫了幾個線程池的工具類涵紊,突然要用到延時任務(wù),居然發(fā)現(xiàn)沒有幔摸,現(xiàn)場擼了一個摸柄,如下。
補:已經(jīng)將前面的ScheduleUtil的定時功能結(jié)合進來了<纫洹G骸!有小修改尿贫,但是用依然5缦薄!庆亡!

創(chuàng)建一個固定長度的線程池匾乓,而且以延遲或定時的方式來執(zhí)行任務(wù)。
ScheduledThreadPool:核心線程池固定又谋,大小無限的線程池拼缝。此線程池支持定時以及周期性執(zhí)行任務(wù)的需求。

/**
 * @desc
 * @auth 方毅超
 * @time 2017/9/27 19:46
 */

public class ScheduledThreadPool {
    private static ScheduledExecutorService pool = null;

    /*初始化線程池*/
    public static void init() {
        if (pool == null) {
            pool = Executors.newScheduledThreadPool(3);
        }
    }

    /*提交任務(wù)執(zhí)行*/
    public static void execute(Runnable r) {
        init();
        pool.execute(r);
    }

    /*提交延遲任務(wù)執(zhí)行,1000毫秒*/
    public static void executeDelay(Runnable r, long delay) {
        init();
        pool.schedule(r, delay, TimeUnit.MILLISECONDS);
    }

    /* 關(guān)閉線程池*/
    public static void unInit() {
        if (pool == null || pool.isShutdown()) return;
        map.clear();
       // pool.shutdown();
        pool.shutdownNow();
        pool = null;
    }


    //定時任務(wù)////////////////////////////////////////////////////////////////////
    /*該接口定義了線程的名字彰亥,用于管理咧七,如判斷是否存活,是否停止該線程等等*/
    public interface SRunnable extends Runnable {
        String getName();
    }
    private static HashMap<String, ScheduledFuture> map = new HashMap<>();

    /**
     * @param sr     需要執(zhí)行測線程任斋,該線程必須繼承SRunnable
     * @param delay  延遲執(zhí)行時間 1000毫秒
     * @param period 執(zhí)行周期時間 1000毫秒
     */
    public static void stard(SRunnable sr, long delay, long period) {
        if (sr.getName() == null || map.get(sr.getName()) != null) {
            throw new UnsupportedOperationException("線程名不能為空或者線程名不能重復(fù)继阻!");
        }
        if (pool == null || pool.isShutdown()) init();
        ScheduledFuture scheduledFuture = pool.scheduleAtFixedRate(sr, delay, period, TimeUnit.MILLISECONDS);
        map.put(sr.getName(), scheduledFuture);
    }

    /**
     * @param sr 停止當前正在執(zhí)行的線程,該線程必須是繼承SRunnable
     */
    public static void stop(SRunnable sr) {
        if (sr.getName() == null) {
            throw new UnsupportedOperationException("停止線程時废酷,線程名不能為空瘟檩!");
        }
        if (pool == null || pool.isShutdown()) return;//服務(wù)未啟動
        if (map.size() > 0 && map.get(sr.getName()) != null) {
            map.get(sr.getName()).cancel(true);
            map.remove(sr.getName());
        }
        if (map.size() <= 0) {
            unInit();
        }
    }

    /**
     * 判斷該線程是否還存活著,還在運行
     *
     * @param sr
     * @return
     */
    public static boolean isAlive(SRunnable sr) {
        if (map.size() > 0 && map.get(sr.getName()) != null) {
            return !map.get(sr.getName()).isDone();
        }
        return false;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末澈蟆,一起剝皮案震驚了整個濱河市墨辛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌趴俘,老刑警劉巖睹簇,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異寥闪,居然都是意外死亡太惠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門疲憋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凿渊,“玉大人,你說我怎么就攤上這事∷栽” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵喂击,是天一觀的道長剂癌。 經(jīng)常有香客問我,道長翰绊,這世上最難降的妖魔是什么佩谷? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮监嗜,結(jié)果婚禮上谐檀,老公的妹妹穿的比我還像新娘。我一直安慰自己裁奇,他們只是感情好桐猬,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刽肠,像睡著了一般溃肪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上音五,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天惫撰,我揣著相機與錄音,去河邊找鬼躺涝。 笑死厨钻,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的坚嗜。 我是一名探鬼主播夯膀,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼惶傻!你這毒婦竟也來了棍郎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤银室,失蹤者是張志新(化名)和其女友劉穎涂佃,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜈敢,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡辜荠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了抓狭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伯病。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出午笛,到底是詐尸還是另有隱情惭蟋,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布药磺,位于F島的核電站告组,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏癌佩。R本人自食惡果不足惜木缝,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望围辙。 院中可真熱鬧我碟,春花似錦、人聲如沸姚建。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掸冤。三九已至恳守,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贩虾,已是汗流浹背催烘。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缎罢,地道東北人伊群。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像策精,于是被迫代替她去往敵國和親舰始。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

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