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

java中LinkedBlockingQueue與ArrayBlockingQueue的異同

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

相同:

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

2、LinkedBlockingQueue和ArrayBlockingQueue都是可阻塞的隊(duì)列

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

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

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

不同:

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

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

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

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

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

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

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

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

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

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

  ArrayBlockingQueue在初始化的時(shí)候,必須傳入一個(gè)容量大小的值

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

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

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

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

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

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

相關(guān)文章

  • SpringBoot中jar打包并部署到Tomcat

    SpringBoot中jar打包并部署到Tomcat

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

    Java源碼解析之可重入鎖ReentrantLock

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

    圖文并茂講解RocketMQ消息類別

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

    聊聊drools?session的不同

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

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

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

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

    有時(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é)合使用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • spring-boot實(shí)現(xiàn)增加自定義filter(新)

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

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

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

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

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

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

最新評(píng)論

云阳县| 乌审旗| 中山市| 洛隆县| 古丈县| 松潘县| 苗栗市| 延长县| 台湾省| 阿瓦提县| 精河县| 乐山市| 普洱| 徐水县| 郧西县| 廉江市| 上饶县| 拉孜县| 陇南市| 楚雄市| 土默特右旗| 雅安市| 阿荣旗| 鄂州市| 蓝田县| 伊川县| 乌拉特后旗| 慈利县| 衡南县| 阿鲁科尔沁旗| 札达县| 漳浦县| 伊通| 宁远县| 紫金县| 报价| 龙陵县| 涡阳县| 绥宁县| 从江县| 土默特左旗|