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

java中LinkedBlockingQueue與ArrayBlockingQueue的異同

 更新時間:2016年08月20日 11:38:18   投稿:mdxy-dxy  
這篇文章主要介紹了java中LinkedBlockingQueue與ArrayBlockingQueue的異同,需要的朋友可以參考下

相同:

1、LinkedBlockingQueue和ArrayBlockingQueue都實現(xiàn)了BlockingQueue接口;

2、LinkedBlockingQueue和ArrayBlockingQueue都是可阻塞的隊列

  內(nèi)部都是使用ReentrantLock和Condition來保證生產(chǎn)和消費的同步;

  當(dāng)隊列為空,消費者線程被阻塞;當(dāng)隊列裝滿,生產(chǎn)者線程被阻塞;

使用Condition的方法來同步和通信:await()和signal()

不同:

1、由上圖可以看出,他們的鎖機制不同

  LinkedBlockingQueue中的鎖是分離的,生產(chǎn)者的鎖PutLock,消費者的鎖takeLock

  而ArrayBlockingQueue生產(chǎn)者和消費者使用的是同一把鎖;

2、他們的底層實現(xiàn)機制也不同

  LinkedBlockingQueue內(nèi)部維護的是一個鏈表結(jié)構(gòu)

在生產(chǎn)和消費的時候,需要創(chuàng)建Node對象進行插入或移除,大批量數(shù)據(jù)的系統(tǒng)中,其對于GC的壓力會比較大

  而ArrayBlockingQueue內(nèi)部維護了一個數(shù)組

在生產(chǎn)和消費的時候,是直接將枚舉對象插入或移除的,不會產(chǎn)生或銷毀任何額外的對象實例

 3、構(gòu)造時候的區(qū)別

  LinkedBlockingQueue有默認的容量大小為:Integer.MAX_VALUE,當(dāng)然也可以傳入指定的容量大小

  ArrayBlockingQueue在初始化的時候,必須傳入一個容量大小的值

  看其提供的構(gòu)造方法就能知道

4、執(zhí)行clear()方法

  LinkedBlockingQueue執(zhí)行clear方法時,會加上兩把鎖

 5、統(tǒng)計元素的個數(shù)

  LinkedBlockingQueue中使用了一個AtomicInteger對象來統(tǒng)計元素的個數(shù)

  ArrayBlockingQueue則使用int類型來統(tǒng)計元素

相關(guān)文章

  • SpringBoot中jar打包并部署到Tomcat

    SpringBoot中jar打包并部署到Tomcat

    最近做了一個SpringBoot項目,今天介紹一下SpringBoot中jar打包并部署到Tomcat,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Java源碼解析之可重入鎖ReentrantLock

    Java源碼解析之可重入鎖ReentrantLock

    今天小編就為大家分享一篇關(guān)于Java源碼解析之可重入鎖ReentrantLock,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 圖文并茂講解RocketMQ消息類別

    圖文并茂講解RocketMQ消息類別

    這篇文章主要介紹了圖文并茂講解RocketMQ消息類別,RocketMQ對于消息提供了很多用法,包括:同步消息、異步消息、單向發(fā)送、順序消息、延時消息、批量消息、過濾消息、事務(wù)消息等
    2022-12-12
  • 聊聊drools?session的不同

    聊聊drools?session的不同

    在drools中存在2種session,一種是有狀態(tài)的Session (Stateful Session),另外一種一種是無狀態(tài)的Session (Stateless Session,本文通過實例代碼給大家介紹drools?session的不同,感興趣的朋友一起看看吧
    2022-05-05
  • IDEA插件開發(fā)之環(huán)境搭建過程圖文詳解

    IDEA插件開發(fā)之環(huán)境搭建過程圖文詳解

    這篇文章主要介紹了IDEA插件開發(fā)之環(huán)境搭建過程,本文通過圖文并茂實例代碼相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 分享java中設(shè)置代理的兩種方式

    分享java中設(shè)置代理的兩種方式

    有時候我們的程序中要提供可以使用代理訪問網(wǎng)絡(luò),代理的方式包括http、https、ftp、socks代理。比如在IE瀏覽器設(shè)置代理,這里簡單介紹下,需要的朋友可以參考下
    2015-12-12
  • spring cloud zuul 與 sentinel的結(jié)合使用操作

    spring cloud zuul 與 sentinel的結(jié)合使用操作

    這篇文章主要介紹了spring cloud zuul 與 sentinel 的結(jié)合使用操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • spring-boot實現(xiàn)增加自定義filter(新)

    spring-boot實現(xiàn)增加自定義filter(新)

    本篇文章主要介紹了spring-boot實現(xiàn)增加自定義filter(新),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 電腦上安裝多個JDK版本時該如何自由切換(詳細圖文)

    電腦上安裝多個JDK版本時該如何自由切換(詳細圖文)

    我們在學(xué)習(xí)的過程中經(jīng)常用到不同的jdk版本,那么如何在一臺電腦上同時安裝多個jdk版本并進行切換呢,這篇文章主要給大家介紹了關(guān)于電腦上安裝多個JDK版本時該如何自由切換的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • javaweb圖書商城設(shè)計之分類模塊(2)

    javaweb圖書商城設(shè)計之分類模塊(2)

    這篇文章主要為大家詳細介紹了javaweb圖書商城設(shè)計之分類模塊的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11

最新評論

柏乡县| 安多县| 西丰县| 江永县| 塘沽区| 行唐县| 抚州市| 喜德县| 房山区| 广州市| 十堰市| 九江市| 天台县| 松阳县| 塔河县| 惠安县| 海门市| 多伦县| 清镇市| 连州市| 枞阳县| 静乐县| 黔西| 青铜峡市| 麦盖提县| 鄂托克前旗| 清河县| 得荣县| 江阴市| 新丰县| 南昌县| 凭祥市| 建阳市| 德阳市| 湖口县| 彰化县| 大渡口区| 星子县| 自治县| 罗甸县| 行唐县|