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

java并發(fā)編程工具類JUC之LinkedBlockingQueue鏈表隊列

 更新時間:2021年06月03日 09:05:34   作者:字母哥博客  
大家都知道LinkedBlockingQueue 隊列是BlockingQueue接口的實現(xiàn)類,所以它具有BlockingQueue接口的一切功能特點,他還提供了兩種構造函數(shù),本文中通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧

java.util.concurrent.LinkedBlockingQueue 是一個基于單向鏈表的、范圍任意的(其實是有界的)、FIFO阻塞隊列。訪問與移除操作是在隊頭進行,添加操作是在隊尾進行,并分別使用不同的鎖進行保護,只有在可能涉及多個節(jié)點的操作才同時對兩個鎖進行加鎖。

隊列是否為空、是否已滿仍然是通過元素數(shù)量的計數(shù)器(count)進行判斷的,由于可以同時在隊頭、隊尾并發(fā)地進行訪問、添加操作,所以這個計數(shù)器必須是線程安全的,這里使用了一個原子類 AtomicInteger,這就決定了它的容量范圍是: 1 –Integer.MAX_VALUE。

在之前的文章中已經(jīng)為大家介紹了java并發(fā)編程的工具:BlockingQueue接口、ArrayBlockingQueue、DelayQueue。

LinkedBlockingQueue 隊列是BlockingQueue接口的實現(xiàn)類,所以它具有BlockingQueue接口的一切功能特點。LinkedBlockingQueue隊列 按照first-in-first-out (FIFO)先進先出的方式對元素進行排序。LinkeBlockingQueue 提供了兩種構造函數(shù),一個構造函數(shù)構造一個隊列容量為固定個數(shù)的隊列,另一個無參構造函數(shù)構造一個隊列容量為Integer.MAX_VALUE的隊列.

public LinkedBlockingQueue() {
    this(Integer.MAX_VALUE);
}

public LinkedBlockingQueue(int capacity) {
    if (capacity <= 0) throw new IllegalArgumentException();
    this.capacity = capacity;
    last = head = new Node<E>(null);
}

ArrayBlockingQueue和LinkedBlockingQueue對比

ArrayBlockingQueue和LinkedBlockingQueue都是實現(xiàn)BlockingQueue接口,所以在使用方式上是一致的,下面我們就不介紹使用方法,而是從二者的性能及底層數(shù)據(jù)結構的實現(xiàn)角度進行

ArrayBlockingQueue插入和刪除數(shù)據(jù),只采用了一個lock鎖,讀取和寫入操作無法并行。 所以在高并發(fā)場景下執(zhí)行效率會比LinkedBlockingQueue慢一些。

LinkedBlockingQueue采用“two lock queue”算法變體,雙鎖(ReentrantLock):takeLock、putLock,允許讀寫并行,remove(e)和迭代器iterators需要獲取2個鎖。這樣可以降低線程由于線程無法獲取到lock而進入WAITING狀態(tài)的可能性,從而提高了線程并發(fā)執(zhí)行的效率。

ArrayBlockingQueue底層代碼是采用數(shù)組實現(xiàn)的,創(chuàng)建的時候必須指定隊列的容量并分配存儲空間;LinkedBlockingQueue采用的是鏈表數(shù)據(jù)結構實現(xiàn)的,其鏈表節(jié)點的存儲空間分配是動態(tài)的,新的元素對象加入隊列分配空間,元素對象從隊列取出之后存儲空間GC,初始化時指定的是隊列的最大容量。但是使用鏈表數(shù)據(jù)結構既是LinkedBlockingQueue優(yōu)勢也是它的劣勢,高并發(fā)場景下由于空間動態(tài)分配需要java JVM頻繁的進行垃圾回收。

總體來說在并發(fā)場景下,LinkedBlockingQueue的吞吐量比ArrayBlockingQueue更好。但是在java實現(xiàn)高性能隊列的首選是disruptor,它不是JDK自帶的。java程序員非常熟悉的Log4j2底層性能比logback和log4j有了較大的提升,究其原因就是使用了disruptor高性能隊列實現(xiàn)的異步日志

到此這篇關于java并發(fā)編程工具類JUC之LinkedBlockingQueue鏈表隊列的文章就介紹到這了,更多相關java LinkedBlockingQueue鏈表隊列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring?Boot項目中解決跨域問題的四種方式總結

    Spring?Boot項目中解決跨域問題的四種方式總結

    這篇文章主要介紹了瀏覽器同源策略限制導致的跨域問題,并詳細記錄了常見的跨域解決方案,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-02-02
  • java創(chuàng)建txt文件并存入內(nèi)容

    java創(chuàng)建txt文件并存入內(nèi)容

    這篇文章主要為大家詳細介紹了java創(chuàng)建txt文件并存入內(nèi)容,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • 教你正確的Java擴展方法示例詳解

    教你正確的Java擴展方法示例詳解

    這篇文章主要為大家介紹了教你正確的Java擴展方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 解決IDEA的maven項目中沒有新建Servlet文件的選項問題

    解決IDEA的maven項目中沒有新建Servlet文件的選項問題

    這篇文章主要介紹了IDEA的maven項目中沒有新建Servlet文件的選項問題及解決方法,本文給大家分享問題原因就解決方法,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Java binarysearch方法原理詳解

    Java binarysearch方法原理詳解

    這篇文章主要介紹了Java binarysearch方法原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • 詳解Java如何實現(xiàn)自定義注解

    詳解Java如何實現(xiàn)自定義注解

    注解(Annotation),也叫元數(shù)據(jù)。一種代碼級別的說明。它是JDK1.5及以后版本引入的一個特性,與類、接口、枚舉是在同一個層次。本文將通過示例詳解Java如何實現(xiàn)自定義注解,需要的可以參考一下
    2022-06-06
  • 關于SpringBoot中的請求映射及使用

    關于SpringBoot中的請求映射及使用

    這篇文章主要介紹了關于SpringBoot中的請求映射及使用,Spring Boot 中的授權機制,包括基于角色的授權和基于資源的授權,同時,我們也將給出相應的代碼示例,幫助讀者更好地理解和應用這些授權機制,需要的朋友可以參考下
    2023-07-07
  • Java中方法使用的深入講解

    Java中方法使用的深入講解

    這篇文章主要給大家介紹了關于Java中方法使用的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • java byte數(shù)組與int,long,short,byte的轉(zhuǎn)換實現(xiàn)方法

    java byte數(shù)組與int,long,short,byte的轉(zhuǎn)換實現(xiàn)方法

    下面小編就為大家?guī)硪黄猨ava byte數(shù)組與int,long,short,byte的轉(zhuǎn)換實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • Java中的DelayQueue實現(xiàn)原理及應用場景詳解

    Java中的DelayQueue實現(xiàn)原理及應用場景詳解

    這篇文章主要介紹了Java中的DelayQueue實現(xiàn)原理及應用場景詳解,DelayQueue是一個沒有邊界BlockingQueue實現(xiàn),加入其中的元素必需實現(xiàn)Delayed接口,當生產(chǎn)者線程調(diào)用put之類的方法加入元素時,會觸發(fā)Delayed接口中的compareTo方法進行排序,需要的朋友可以參考下
    2023-12-12

最新評論

象山县| 宜都市| 本溪| 武冈市| 陇西县| 肥城市| 库尔勒市| 望谟县| 调兵山市| 马山县| 开阳县| 申扎县| 台南市| 屏东县| 宣城市| 建瓯市| 邹城市| 伊宁市| 韩城市| 大英县| 义马市| 滦南县| 古交市| 宁晋县| 乌鲁木齐县| 光泽县| 正镶白旗| 穆棱市| 肃宁县| 大荔县| 泰和县| 松阳县| 绥棱县| 华坪县| 鄄城县| 柘荣县| 长海县| 双柏县| 陆丰市| 常州市| 鲁甸县|