亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

《java.util.concurrent 包源碼閱讀》13 線程池系列之ThreadPoolExecutor 第三部分

2019-11-14 20:57:31
字體:
來源:轉載
供稿:網友
java.util.concurrent 包源碼閱讀》13 線程池系列之ThreadPoolExecutor 第三部分

這一部分來說說線程池如何進行狀態控制,即線程池的開啟和關閉。

先來說說線程池的開啟,這部分來看ThreadPoolExecutor構造方法:

    public ThreadPoolExecutor(int corePoolSize,                              int maximumPoolSize,                              long keepAliveTime,                              TimeUnit unit,                              BlockingQueue<Runnable> workQueue,                              ThreadFactory threadFactory,                              RejectedExecutionHandler handler) {        if (corePoolSize < 0 ||            maximumPoolSize <= 0 ||            maximumPoolSize < corePoolSize ||            keepAliveTime < 0)            throw new IllegalArgumentException();        if (workQueue == null || threadFactory == null || handler == null)            throw new NullPointerException();        this.corePoolSize = corePoolSize;        this.maximumPoolSize = maximumPoolSize;        this.workQueue = workQueue;        this.keepAliveTime = unit.toNanos(keepAliveTime);        this.threadFactory = threadFactory;        this.handler = handler;    }

可以看到,盡管設定了corePoolSize,也就是Worker線程的數量,但是線程池開啟的時候,默認是沒有創建這些Worker線程的,但是ThreadPoolExecutor提供了PRestartAllCoreThreads方法來開啟所有的預設的Worker線程,以及prestartCoreThread嘗試開啟一個預設的Worker線程。

這里重點說說handler,也就是RejectedExecutionHandler,拒絕任務的處理類,ThreadPoolExecutor提供四種策略:

1. CallerRunsPolicy

該策略會在ThreadPoolExecutor沒有關閉的情況,依舊運行任務

2. AbortPolicy

該策略會拋出一個RejectedExecutionException

3. DiscardPolicy

該策略直接忽略該任務,不會有任何動作

4. DiscardOldestPolicy

該策略會在ThreadPoolExecutor沒有關閉的情況,丟棄下一個將要執行的任務,把該任務加入到執行隊列。

接下來說說關閉,ThreadPoolExecutor提供了shutdown和shutdownNow兩種方式,從字面上就能看出區別,后者會嘗試結束正在運行的任務。

先來看shutdown:

    public void shutdown() {        final ReentrantLock mainLock = this.mainLock;        mainLock.lock();        try {            checkShutdownaccess();            advanceRunState(SHUTDOWN);            interruptIdleWorkers();            onShutdown(); // ScheduledThreadPoolExecutor的回調方法        } finally {            mainLock.unlock();        }        tryTerminate();    }

再看shutdownNow:

    public List<Runnable> shutdownNow() {        List<Runnable> tasks;        final ReentrantLock mainLock = this.mainLock;        mainLock.lock();        try {            checkShutdownAccess();            advanceRunState(STOP);            interruptWorkers();            tasks = drainQueue();        } finally {            mainLock.unlock();        }        tryTerminate();        return tasks;    }

兩個方法的代碼非常相似,區別在于:

1. shutdownNow的狀態設置為STOP,shutdown的狀態是SHUTDOWN

2. shutdownNow會中斷所有線程,也就是所有任務,而shutdown僅僅中斷空閑線程,不會影響正在執行的任務。

3. shutdownNow會導出未執行的任務。

兩個方法都用到的checkShutdownAccess方法主要是檢查方法調用者是否有權限中斷Worker線程。

advanceRunState方法用于設定線程的狀態,如果狀態值大于等于該狀態值則會返回。關于狀態值參看 《java.util.concurrent 包源碼閱讀》11 線程池系列之ThreadPoolExecutor 第一部分。

關于interruptIdleWorkers和interruptWorkers,在上一篇文章曾經說過Worker線程具備鎖的功能,因此可以通過tryLock來判斷Worker線程是否處于空閑狀態,這是兩個方法的區別所在。

這一部分寫的有些凌亂,各位見諒。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美视频在线| 亚洲国产精品字幕| 久久成人在线视频| 69av成年福利视频| 欧美激情a∨在线视频播放| 亚洲视频一区二区三区| 4388成人网| 欧美日韩国产丝袜另类| 国产精品久久久久久久久粉嫩av| 国产精品精品视频| 中文字幕久久亚洲| 亚洲欧洲高清在线| 欧美裸体xxxx极品少妇| 中文字幕亚洲无线码在线一区| 亚洲一区美女视频在线观看免费| 91久久在线观看| 亚洲人高潮女人毛茸茸| 欧美精品久久久久| 久久精品国产96久久久香蕉| 亚洲3p在线观看| 亚洲美女av电影| 亚洲精品日韩久久久| 日韩精品在线播放| 亚洲一区二区久久久久久久| 欧美极品第一页| 在线观看欧美日韩国产| 69视频在线播放| 日韩男女性生活视频| 欧美成人在线免费| 色哟哟亚洲精品一区二区| 夜夜嗨av一区二区三区免费区| 国产一区在线播放| 欧美精品xxx| 日本一区二区在线免费播放| 中国日韩欧美久久久久久久久| 欧洲永久精品大片ww免费漫画| 亚洲一区二区三区久久| 欧美精品videossex性护士| 国产精品91免费在线| 高清日韩电视剧大全免费播放在线观看| 欧美激情一级欧美精品| 欧美激情亚洲另类| 亚洲**2019国产| 国产精品久久久91| 国产欧美中文字幕| 亚洲精品少妇网址| 成人久久精品视频| 亚洲人成毛片在线播放| 在线丨暗呦小u女国产精品| 国产在线观看精品| 日本a级片电影一区二区| 欧美性猛交xxxx乱大交3| 久久免费精品日本久久中文字幕| 国产精品入口免费视频一| 欧美丰满少妇xxxxx| 欧美做受高潮电影o| 国产亚洲欧洲黄色| 2019中文字幕在线免费观看| 日产精品99久久久久久| 欧美成aaa人片在线观看蜜臀| 欧美激情第一页xxx| 视频在线一区二区| 日韩在线视频播放| 久久青草福利网站| 久久精品久久精品亚洲人| 国产日韩欧美在线视频观看| 久久精品中文字幕一区| 亚洲国产精品久久久| 精品一区精品二区| 国产精品夜色7777狼人| 久久久免费电影| 久久电影一区二区| 精品国产31久久久久久| 91大神在线播放精品| 成人福利在线观看| 亚洲精品日韩在线| 最新亚洲国产精品| 亚洲а∨天堂久久精品9966| www.亚洲一区| 亚洲欧洲国产一区| 九九热r在线视频精品| 欧美极品少妇与黑人| 日韩精品欧美激情| 2019av中文字幕| 欧美性猛交xxxx免费看| 亚洲午夜女主播在线直播| 久久久久久久久久久久久久久久久久av| 最近2019年好看中文字幕视频| 日本成熟性欧美| 国产精品欧美一区二区| 尤物tv国产一区| 日韩av在线看| 日韩av电影中文字幕| 欧美在线视频a| 8x海外华人永久免费日韩内陆视频| 亚洲欧美中文日韩v在线观看| 国产视频精品xxxx| 国产精选久久久久久| 欧美日韩国产二区| 久久久久久国产精品美女| 国产精品三级美女白浆呻吟| 懂色av中文一区二区三区天美| 国产亚洲精品美女久久久久| 欧美黑人一级爽快片淫片高清| 欧美亚洲视频在线观看| 亚洲欧美精品伊人久久| 久久男人的天堂| 亚洲欧美制服另类日韩| 中文字幕日韩专区| 国产成人精品优优av| 欧美激情成人在线视频| 亚洲在线免费看| 91免费看视频.| 成人网址在线观看| 91免费看视频.| 欧美大成色www永久网站婷| 亚洲a成v人在线观看| 久久亚洲精品视频| 日韩免费精品视频| 成人日韩在线电影| 久久频这里精品99香蕉| 91国内揄拍国内精品对白| 久久伊人免费视频| 日本在线观看天堂男亚洲| 一本一本久久a久久精品牛牛影视| 精品视频在线观看日韩| 国产亚洲精品美女久久久久| 九九视频这里只有精品| 国产精品99免视看9| 亚洲在线免费视频| 欧美激情网友自拍| 欧美性xxxxx极品娇小| 欧美理论电影在线观看| 久久深夜福利免费观看| 亚洲深夜福利视频| 国产日韩欧美电影在线观看| 国产精品成人在线| 久久精视频免费在线久久完整在线看| 日韩在线视频观看正片免费网站| 欧洲成人在线视频| 国模私拍一区二区三区| 国产91在线播放精品91| 高清一区二区三区日本久| 精品在线观看国产| 亚洲а∨天堂久久精品喷水| 神马久久久久久| 欧美大秀在线观看| 日韩视频在线一区| 国产免费一区视频观看免费| 日韩成人在线电影网| 成人亚洲激情网| 欧美在线观看一区二区三区| 日本免费久久高清视频| 亚洲欧美激情四射在线日| 国产精品主播视频| 在线播放亚洲激情| 国产成人精品电影久久久| 精品久久久久人成| 亚洲国产91精品在线观看| 日韩欧美一区二区在线| 日韩一区二区三区在线播放| 欧美精品videossex性护士| 国产91露脸中文字幕在线| 国产91精品不卡视频|