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

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

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

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

接著說worker線程是如何工作的。ThreadPoolExecutor有一個成員類叫Worker,所起到的作用就是線程池worker線程的作用。

PRivate final class Worker extends AbstractQueuedSynchronizer implements Runnable

這里AbstractQueuedSynchronizer的作用是使Worker具有鎖的功能,在執行任務時,會把Worker鎖住,這個時候就無法中斷Worker。Worker空閑時候是線程池可以通過獲取鎖,改變Worker的某些狀態,在此期間因為鎖被占用,Worker就是不會執行任務的。

Worker工作的邏輯在ThreadPoolExecutor#runWorker方法中

        public void run() {            runWorker(this);        }

因此轉到runWorker方法:

    final void runWorker(Worker w) {        Runnable task = w.firstTask;        w.firstTask = null;        boolean completedAbruptly = true;        try {            // 執行分配的任務或者從BlockingQueue中等待獲取任務            while (task != null || (task = getTask()) != null) {                w.lock();                clearInterruptsForTaskRun();                try {                    // 執行任務之前的工作                    beforeExecute(w.thread, task);                    Throwable thrown = null;                    // 執行任務,如果發生異常,該Worker就不會再繼續執行任務                    try {                        task.run();                    } catch (RuntimeException x) {                        thrown = x; throw x;                    } catch (Error x) {                        thrown = x; throw x;                    } catch (Throwable x) {                        thrown = x; throw new Error(x);                    } finally {                        // 任務執行完的工作                        afterExecute(task, thrown);                    }                } finally {                    task = null;                    w.completedTasks++;                    w.unlock();                }            }            completedAbruptly = false;        } finally {            // Worker不再執行任務的處理,completedAbruptly為false            // 表示正常結束,否則表示執行任務出錯。            processWorkerExit(w, completedAbruptly);        }    }

來看看processWorkerExit,重點看看執行任務發生異常時該如何處理

    private void processWorkerExit(Worker w, boolean completedAbruptly) {        // 發生異常,首先要更新Worker數量        if (completedAbruptly)            decrementWorkerCount();        // 移除這個Worker        final ReentrantLock mainLock = this.mainLock;        mainLock.lock();        try {            completedTaskCount += w.completedTasks;            workers.remove(w);        } finally {            mainLock.unlock();        }        // 嘗試停止線程池,正常運行的線程池調用該方法不會有任何動作        tryTerminate();        int c = ctl.get();        // 如果線程池沒有被關閉的話,        if (runStateLessThan(c, STOP)) {            // Worker不是異常退出,檢查worker線程數是不是小于最小值            // 這個最小值分為幾種情況:            // 1. allowCoreThreadTimeOut(JDK6新加)表示是否允許線程池在超            //     過一定時間沒有收到任務后退出,這種情況下,最小值為0,因為如果如            //     果一直沒有任何任務,worker線程數是0            // 2. 最小值為corePoolSize,因為corePoolSize可能為0,因此這種情況            //     下,如果有任務的話必然會有Worker,因此最小值為1            if (!completedAbruptly) {                int min = allowCoreThreadTimeOut ? 0 : corePoolSize;                if (min == 0 && ! workQueue.isEmpty())                    min = 1;                if (workerCountOf(c) >= min)                    return;            }            // 如果Worker線程數小于最小值,新建一個Worker線程            addWorker(null, false);        }    }

這篇文章主要講述了Worker線程的工作原理,接下里會講線程池是如何進行狀態切換的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
高清日韩电视剧大全免费播放在线观看| 97**国产露脸精品国产| 国产成人av网| 亚洲欧美国产精品久久久久久久| 亚洲精品aⅴ中文字幕乱码| 精品久久久国产| 日韩精品视频观看| 91久久久久久久一区二区| 宅男66日本亚洲欧美视频| 国产精品欧美日韩一区二区| 欧美伊久线香蕉线新在线| 国产精品一区二区av影院萌芽| 国产成人激情小视频| 亚洲二区在线播放视频| 日韩欧美一区视频| 亚洲国产欧美在线成人app| 日韩一区二区久久久| 亚洲欧洲av一区二区| 亚洲精品98久久久久久中文字幕| 亚洲欧美国产制服动漫| 久久99国产综合精品女同| 欧美精品免费看| 91老司机精品视频| 日韩视频精品在线| 欧美有码在线观看| 国产97人人超碰caoprom| 亚洲a级在线观看| 成人免费看片视频| 久久久精品一区二区三区| 欧美激情亚洲一区| 日韩精品中文字幕在线| 亚洲深夜福利网站| 国产一区二区美女视频| 亚洲精品小视频在线观看| 91在线无精精品一区二区| 久久影视电视剧免费网站| 欧美大片第1页| 亚洲精品免费一区二区三区| 一本色道久久综合狠狠躁篇怎么玩| 久久中文字幕在线视频| 久久久精品国产亚洲| 欧美高清videos高潮hd| 亚洲激情视频网站| 欧美精品九九久久| 秋霞成人午夜鲁丝一区二区三区| 成人情趣片在线观看免费| 国产午夜精品全部视频在线播放| 中文在线资源观看视频网站免费不卡| 亚洲成人av在线| 久久精品男人天堂| 国产精选久久久久久| 日本成人激情视频| 亚洲欧美在线x视频| 久久综合网hezyo| 国产丝袜精品视频| 最新日韩中文字幕| 欧美成人精品激情在线观看| 久久亚洲国产成人| 97在线看免费观看视频在线观看| 5566日本婷婷色中文字幕97| 国语自产精品视频在线看| 亚洲国产精品久久久久秋霞不卡| 91精品综合视频| 成人免费看黄网站| 亚洲一区二区自拍| 欧美日韩亚洲网| 亚洲黄色有码视频| 欧美一级成年大片在线观看| 国产欧美日韩最新| 亚洲第一在线视频| 欧美性猛交xxxx| 日韩精品中文字| 欧美激情一二区| 久久91超碰青草是什么| 国产91在线播放九色快色| 91精品啪在线观看麻豆免费| 97人人模人人爽人人喊中文字| 国产欧美日韩中文字幕在线| 欧美美女18p| 在线亚洲男人天堂| 日本中文字幕久久看| 精品人伦一区二区三区蜜桃免费| 国产亚洲精品美女久久久| 91丨九色丨国产在线| 国产aⅴ夜夜欢一区二区三区| 69精品小视频| 91国语精品自产拍在线观看性色| 18性欧美xxxⅹ性满足| 日韩在线观看av| 久久成人国产精品| 一本色道久久88综合亚洲精品ⅰ| 欧美激情乱人伦一区| 国产精品永久免费观看| 国产成人一区二| 在线播放日韩av| 亚洲毛片在线观看| 午夜精品久久久久久久99热浪潮| 在线视频免费一区二区| 国模精品视频一区二区三区| 亚洲最新av网址| 久久艹在线视频| 91精品视频在线看| 国产成人av在线| 国产欧美一区二区白浆黑人| 7m第一福利500精品视频| 久久中文字幕视频| 国产精品第1页| 国产精品久久久久久久久久久久| 欧美成人一二三| 久久久久亚洲精品成人网小说| 欧洲永久精品大片ww免费漫画| 91亚洲午夜在线| 国产一区二区三区18| x99av成人免费| 欧美国产激情18| 91精品国产综合久久久久久久久| 国产日韩亚洲欧美| 麻豆精品精华液| 怡红院精品视频| www.欧美三级电影.com| 欧美孕妇孕交黑巨大网站| 国产精品aaaa| 日韩欧美a级成人黄色| 91精品久久久久久| 一区二区福利视频| 亚洲人a成www在线影院| 欧美精品精品精品精品免费| 丰满岳妇乱一区二区三区| 国产精品久久在线观看| 亚洲色图美腿丝袜| 91精品免费久久久久久久久| 日韩av影院在线观看| 色综合色综合网色综合| 国产aⅴ夜夜欢一区二区三区| 国内成人精品视频| 国内精品久久久久久久| 亚洲第一区中文字幕| 亚洲天堂精品在线| 国产精品色悠悠| 欧美日韩精品在线播放| 中文字幕不卡在线视频极品| 97久久伊人激情网| 国产精品一区二区三区毛片淫片| 国产91露脸中文字幕在线| 亚洲最大的av网站| 91久久国产综合久久91精品网站| 成人啪啪免费看| 久久视频免费在线播放| 亚洲欧美精品一区二区| 国产精品免费一区| 午夜精品久久久久久99热软件| 97在线视频免费| 永久免费精品影视网站| 成人免费直播live| 国产精品久久久av久久久| 精品久久香蕉国产线看观看gif| 亚洲欧美国产精品va在线观看| 亚洲欧美综合区自拍另类| 7777免费精品视频| www.欧美视频| 国产欧美欧洲在线观看| 亚洲精品一区二区网址| 日韩激情av在线播放| 久久999免费视频|