最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java線程池隊(duì)列LinkedBlockingDeque

 更新時(shí)間:2022年12月11日 14:07:52   作者:刨紅薯的小羊竿爾  
這篇文章主要為大家介紹了Java線程池隊(duì)列LinkedBlockingDeque示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

public enum QueueTypeEnum {
    ARRAY_BLOCKING_QUEUE(1, "ArrayBlockingQueue"),
    LINKED_BLOCKING_QUEUE(2, "LinkedBlockingQueue"),
    DELAY_QUEUE(3, "DelayQueue"),
    PRIORITY_BLOCKING_QUEUE(4, "PriorityBlockingQueue"),
    SYNCHRONOUS_QUEUE(5, "SynchronousQueue"),
    LINKED_TRANSFER_QUEUE(6, "LinkedTransferQueue"),
    LINKED_BLOCKING_DEQUE(7, "LinkedBlockingDeque"),
    VARIABLE_LINKED_BLOCKING_QUEUE(8, "VariableLinkedBlockingQueue"),
    MEMORY_SAFE_LINKED_BLOCKING_QUEUE(9, "MemorySafeLinkedBlockingQueue");
}

LinkedBlockingDeque

LinkedBlockingDeque: 使用雙向隊(duì)列實(shí)現(xiàn)的有界雙端阻塞隊(duì)列。雙端意味著可以像普通隊(duì)列一樣 FIFO(先進(jìn)先出),也可以像棧一樣 FILO(先進(jìn)后出)。

LinkedBlockingDeque是一個(gè)基于鏈表的雙端阻塞隊(duì)列,和LinkedBlockingQueue類似,區(qū)別在于該類實(shí)現(xiàn)了Deque接口,而LinkedBlockingQueue實(shí)現(xiàn)了Queue接口。

LinkedBlockingDeque是一個(gè)可選容量的阻塞隊(duì)列,如果沒有設(shè)置容量,那么容量將是Int的最大值。

LinkedBlockingDeque的重要字段有如下幾個(gè):

//隊(duì)列的頭節(jié)點(diǎn)
transient Node<E> first;
//隊(duì)列的尾節(jié)點(diǎn)
transient Node<E> last;
//隊(duì)列中元素的個(gè)數(shù)
private transient int count;
//隊(duì)列中元素的最大個(gè)數(shù)
private final int capacity;
//鎖
final ReentrantLock lock = new ReentrantLock();
//隊(duì)列為空時(shí),阻塞take線程的條件隊(duì)列
private final Condition notEmpty = lock.newCondition();
//隊(duì)列滿時(shí),阻塞put線程的條件隊(duì)列
private final Condition notFull = lock.newCondition();

從上面的字段,可以看到LinkedBlockingDeque內(nèi)部只有一把鎖以及該鎖上關(guān)聯(lián)的兩個(gè)條件,所以可以推斷同一時(shí)刻只有一個(gè)線程可以在隊(duì)頭或者隊(duì)尾執(zhí)行入隊(duì)或出隊(duì)操作??梢园l(fā)現(xiàn)這點(diǎn)和LinkedBlockingQueue不同,LinkedBlockingQueue可以同時(shí)有兩個(gè)線程在兩端執(zhí)行操作。

由于LinkedBlockingDeque是一個(gè)雙端隊(duì)列,所以就可以在隊(duì)頭執(zhí)行入隊(duì)和出隊(duì)操作,也可以在隊(duì)尾執(zhí)行入隊(duì)和出隊(duì)操作。

public LinkedBlockingDeque() {
    this(Integer.MAX_VALUE);
}
public LinkedBlockingDeque(int capacity) {
    if (capacity <= 0) throw new IllegalArgumentException();
    this.capacity = capacity;
}
public LinkedBlockingDeque(Collection<? extends E> c) {
    this(Integer.MAX_VALUE);
    final ReentrantLock lock = this.lock;
    lock.lock(); // Never contended, but necessary for visibility
    try {
        for (E e : c) {
            if (e == null)
                throw new NullPointerException();
            if (!linkLast(new Node<E>(e)))
                throw new IllegalStateException("Deque full");
        }
    } finally {
        lock.unlock();
    }
}

LinkedBlockingDeque和LinkedBlockingQueue的區(qū)別

LinkedBlockingDeque和LinkedBlockingQueue的相同點(diǎn)在于:

  • 基于鏈表
  • 容量可選,不設(shè)置的話,就是Int的最大值

LinkedBlockingDeque和LinkedBlockingQueue的不同點(diǎn)在于:

  • 雙端鏈表和單鏈表
  • 不存在哨兵節(jié)點(diǎn)
  • 一把鎖+兩個(gè)條件

以上就是Java線程池隊(duì)列LinkedBlockingDeque的詳細(xì)內(nèi)容,更多關(guān)于Java線程池隊(duì)列的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java吃貨聯(lián)盟訂餐系統(tǒng)代碼實(shí)例

    Java吃貨聯(lián)盟訂餐系統(tǒng)代碼實(shí)例

    這篇文章主要介紹了Java訂餐系統(tǒng),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Springboot靜態(tài)資源訪問實(shí)現(xiàn)代碼解析

    Springboot靜態(tài)資源訪問實(shí)現(xiàn)代碼解析

    這篇文章主要介紹了Springboot靜態(tài)資源訪問實(shí)現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Netty粘包拆包問題解決方案

    Netty粘包拆包問題解決方案

    這篇文章主要介紹了Netty粘包拆包問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java實(shí)現(xiàn)讀取TXT和CSV文件內(nèi)容

    Java實(shí)現(xiàn)讀取TXT和CSV文件內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語(yǔ)言實(shí)現(xiàn)讀取TXT和CSV文件內(nèi)容的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-02-02
  • springboot+mybatis配置控制臺(tái)打印sql日志的方法

    springboot+mybatis配置控制臺(tái)打印sql日志的方法

    這篇文章主要介紹了springboot+mybatis配置控制臺(tái)打印sql日志的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 基于jdk動(dòng)態(tài)代理和cglib動(dòng)態(tài)代理實(shí)現(xiàn)及區(qū)別說明

    基于jdk動(dòng)態(tài)代理和cglib動(dòng)態(tài)代理實(shí)現(xiàn)及區(qū)別說明

    這篇文章主要介紹了基于jdk動(dòng)態(tài)代理和cglib動(dòng)態(tài)代理實(shí)現(xiàn)及區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • java根據(jù)圖片中綠色像素點(diǎn)的多少進(jìn)行排序

    java根據(jù)圖片中綠色像素點(diǎn)的多少進(jìn)行排序

    這篇文章主要介紹了java根據(jù)圖片中綠色像素點(diǎn)的多少進(jìn)行排序,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • SpringBoot文件上傳控制及Java 獲取和判斷文件頭信息

    SpringBoot文件上傳控制及Java 獲取和判斷文件頭信息

    這篇文章主要介紹了SpringBoot文件上傳控制的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • java如何獲取request中json數(shù)據(jù)

    java如何獲取request中json數(shù)據(jù)

    這篇文章主要給大家介紹了關(guān)于java如何獲取request中json數(shù)據(jù)的相關(guān)資料,文中通過代碼示例以及圖文將獲取的方法介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • MyBatisCodeHelperPro最新激活方法(有效方法)

    MyBatisCodeHelperPro最新激活方法(有效方法)

    這篇文章主要介紹了MyBatisCodeHelperPro最新激活方法親測(cè)有效,非常好用,小編今天以idea2021.2.1為例給大家詳細(xì)講解,需要的朋友可以參考下
    2022-08-08

最新評(píng)論

普兰店市| 文山县| 开远市| 连山| 许昌县| 祁连县| 虹口区| 大悟县| 通辽市| 河曲县| 蚌埠市| 齐河县| 盱眙县| 顺昌县| 营口市| 卓尼县| 安西县| 都匀市| 胶南市| 朝阳市| 桂林市| 泗水县| 新余市| 漠河县| 敦煌市| 信丰县| 鄯善县| 金华市| 策勒县| 淄博市| 高陵县| 怀远县| 邻水| 赣州市| 略阳县| 正阳县| 铁力市| 冷水江市| 汽车| 兰考县| 环江|