日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java多线程 --ConcurrentLinkedQueue 非阻塞 线程安全队列

發布時間:2025/3/19 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java多线程 --ConcurrentLinkedQueue 非阻塞 线程安全队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?ConcurrentLinkedQueue是一個基于鏈接節點的無界線程安全隊列,它采用先進先出的規則對節點進行排序,當我們添加一個元素的時候,它會添加到隊列的尾部;當我們獲取一個元素時,它會返回隊列頭部的元素。它采用了“wait-free”算法(即CAS算法)來實現。

阻塞隊列BlockingQueue:

  • 支持阻塞的插入方法:意思是當隊列滿時,隊列會阻塞插入元素的線程,直到隊列不滿。
  • 支持阻塞的移除方法:意思是在隊列為空時,獲取元素的線程會等待隊列變為非空。
  • Java里的阻塞隊列

  • ArrayBlockingQueue:一個由數組結構組成的有界阻塞隊列,此隊列按照先進先出(FIFO)的原則對元素進行排序,不保證線程公平的訪問隊列;
  • LinkedBlockingQueue:一個由鏈表結構組成的有界阻塞隊列,FIFO先進先出。
  • PriorityBlockingQueue:一個支持優先級排序的無界阻塞隊列。
  • DelayQueue:是一個支持延時獲取元素的無界阻塞隊列。
  • SynchronousQueue:一個不存儲元素的阻塞隊列。
  • LinkedTransferQueue:一個由鏈表結構組成的無界阻塞隊列。
  • LinkedBlockingDeque:一個由鏈表結構組成的雙向阻塞隊列。
  • ArrayBlockingQueue 通過?ArrayBlockingQueue fairQueue = new ArrayBlockingQueue(1000,true);保證線程公平訪問隊列。

    看下構造方法:

    public ArrayBlockingQueue(int capacity, boolean fair) {if (capacity <= 0)throw new IllegalArgumentException();this.items = new Object[capacity];lock = new ReentrantLock(fair);notEmpty = lock.newCondition();notFull = lock.newCondition();}

    使用可重入鎖實現。

    DelayQueue使用場景:

  • 緩存系統設計;
  • 定時任務調度;
  • ?

    SynchronousQueue是一個不存儲元素的阻塞隊列。每一個put操作必須等待一個take操作,否則不能繼續添加元素。
    它支持公平訪問隊列。默認情況下線程采用非公平性策略訪問隊列。
    SynchronousQueue的吞吐量高于LinkedBlockingQueue和ArrayBlockingQueue。

    Fork Join框架:

    Fork/Join框架是Java 7提供的一個用于并行執行任務的框架,是一個把大任務分割成若干個小任務,最終匯總每個小任務結果后得到大任務結果的框架。

    工作竊取算法:

    優點:充分利用線程并行計算,減少線程間競爭。

    缺點:在某些情況下還是存在競爭,比如雙端隊列里只有一個任務時。并且該算法會消耗了更多的系統資源,比如創建多個線程和多個雙端隊列。

    ?

    框架設計:

  • 分割任務。首先我們需要有一個fork類來把大任務分割成子任務,有可能子任務還是很大,所以還需要不停地分割,直到分割出的子任務足夠小。
  • 執行任務并合并結果。分割的子任務分別放在雙端隊列里,然后幾個啟動線程分別從雙端隊列里獲取任務執行。子任務執行完的結果都統一放在一個隊列里,啟動一個線程從隊列里拿數據,然后合并這些數據。
  • ?

    總結

    以上是生活随笔為你收集整理的java多线程 --ConcurrentLinkedQueue 非阻塞 线程安全队列的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。