大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Java多線程編程概述
Java多線程的安全問題
Java多線程同步
Java多線程間的通信
Java線程Lock
Java多線程管理
保障線程安全的設計技術
Java鎖的優化及注意事項
Java多線程集合
【Java多線程】單例模式與多線程

Java線程池的底層實現

查看Executors工具類中newCachedThreadPool(), newSingleThreadExcecutor(), newFixedThreadPool()源碼:

   public static ExecutorService newCachedThreadPool() {
        return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                                      60L, TimeUnit.SECONDS,
                                      new SynchronousQueue());
}
該線程池在極端情況下,每次提交新的任務都會創建新的線程執行. 適合用來執行大量耗時短并且提交頻繁的任務
    public static ExecutorService newFixedThreadPool(int nThreads) {
        return new ThreadPoolExecutor(nThreads, nThreads,
                                      0L, TimeUnit.MILLISECONDS,
                                      new LinkedBlockingQueue());
    }
    public static ExecutorService newSingleThreadExecutor() {
        return new FinalizableDelegatedExecutorService
            (new ThreadPoolExecutor(1, 1,
                                    0L, TimeUnit.MILLISECONDS,
                                    new LinkedBlockingQueue()));
    }
Excutors工具類中返回線程池的方法底層都使用了ThreadPoolExecutor線程池,這些方法都是ThreadPoolExecutor線程池的封裝。
ThreadPoolExecutor的構造方法:
    public ThreadPoolExecutor(int corePoolSize,
                                   int maximumPoolSize,
                                   long keepAliveTime,
                                   TimeUnit unit,
                                   BlockingQueue workQueue,
                                   ThreadFactory threadFactory,
                                   RejectedExecutionHandler handler)
各個參數含義:

corePoolSize, 指定線程池中核心線程的數量。

maxinumPoolSize,指定線程池中最大線程數量。

keepAliveTime,當線程池線程的數量超過corePoolSize時,多余的空閑線程的存活時長,即空閑線程在多長時長內銷毀。

unit, 是keepAliveTime時長單位。

workQueue,任務隊列,把任務提交到該任務隊列中等待執行。

threadFactory,線程工廠,用于創建線程。

handler拒絕策略,當任務太多來不及處理時,如何拒絕。

說明:

workQueue工作隊列是指提交未執行的任務隊列,它是BlockingQueue接口的對象,僅用于存儲Runnable任務.根據隊列功能分類,在ThreadPoolExecutor構造方法中可以使用以下幾種阻塞隊列:

1、直接提交隊列,由SynchronousQueue 對象提供,該隊列沒有容量,提交給線程池的任務不會被真實的保存,總是將新的任務提交給線程執行,如果沒有空閑線程,則嘗試創建新的線程,如果線程數量已經達到maxinumPoolSize規定的最大值則執行拒絕策略。

2、有界任務隊列,由ArrayBlockingQueue實現,在創建ArrayBlockingQueue對象時,可以指定一個容量. 當有任務需要執行時,如果線程池中線程數小于corePoolSize核心線程數則創建新的線程;如果大于corePoolSize核心線程數則加入等待隊列.如果隊列已滿則無法加入,在線程數小于maxinumPoolSize指定的最大線程數前提下會創建新的線程來執行,如果線程數大于maxinumPoolSize最大線程數則執行拒絕策略。

3、無界任務隊列,由LinkedBlockingQueue對象實現,與有界隊列相比,除非系統資源耗盡,否則無界隊列不存在任務入隊失敗的情況. 當有新的任務時,在系統線程數小于corePoolSize核心線程數則創建新的線程來執行任務;當線程池中線程數量大于corePoolSize核心線程數則把任務加入阻塞隊列。

4、優先任務隊列是通過 PriorityBlockingQueue實現的,是帶有任務優先級的隊列,是一個特殊的無界隊列.不管是ArrayBlockingQueue隊列還是LinkedBlockingQueue隊列都是按照先進先出算法處理任務的.在PriorityBlockingQueue隊列中可以根據任務優先級順序先后執行。

全部教程
主站蜘蛛池模板: 成人毛片免费观看视频 | 国产女人伦码一区二区三区不卡 | 亚洲美女啪啪 | 国产精品一区高清在线观看 | 九九99香蕉在线视频美国毛片 | 日本大蕉香蕉大视频在线观看 | 国产日本欧美亚洲精品视 | 久久精品国产大片免费观看 | 成人日韩精品 | 天天操2023| 99久久国产综合精品2020 | 一区二区三区欧美日韩 | 欧美精品在线一区 | 国产91久久精品一区二区 | 老妇激情毛片免费 | 欧美大狠狠大臿蕉香蕉大视频 | 国产成人18黄网站麻豆 | 国产成社区在线视频观看 | 国产美女久久久久久久久久久 | 美国一级毛片片aa久久综合 | 日韩一区二区免费视频 | 性xxxxbbbbxxxx中国| 成人久久伊人精品伊人 | 99精品国产福利在线观看 | 亚洲va久久久久综合 | 黄色成人免费网站 | 久久99影院网久久久久久 | 中文字幕无线码中文字幕免费 | 久久精品这里只有精品 | 操亚洲 | 欧美韩日在线 | 91久久老司机福利精品网 | 日日射天天操 | 日韩字幕 | 成人a网| 久久国产热视频 | 黄色成人在线视频 | 奇米影视7777久久精品人人爽 | 久久久久久久国产高清 | 毛片毛片毛片毛片出来毛片 | 米奇精品一区二区三区在线观看 |