線程安全的隊列


Java提供的線程安全的Queue可以分為阻塞隊列和非阻塞隊列,其中阻塞隊列的典型例子是BlockingQueue,非阻塞隊列的典型例子是ConcurrentLinkedQueue

BlockingQueue是一個接口, 繼承Queue接口,Queue接口繼承 Collection

BlockingQueue的方法

 

 

 其中add 和remove方法會拋出異常,一般使用后面兩組方法

BlockingQueue的實現類

    ArrayBlockingQueue

    DelayQueue

    LinkedBlockingQueue

    PriorityBlockingQueue

    SynchronousQueue

ArrayBlockingQueue:由數組實現的有界阻塞隊列,其中元素以FIFO(先入先出)順序排序,其構造函數必須帶一個int參數來指明其大小,可選參數fair(布爾)決定在多線程搶占時是否使用公平鎖

LinkedBlockingQueue:由鏈表實現的阻塞隊列,其中元素以FIFO(先入先出)順序排序,若其構造函數帶一個規定大小的參數,生成的BlockingQueue有大小限制,若不帶大小參數,所生成的BlockingQueue的大小由Integer.MAX_VALUE來決定

PriorityBlockingQueue:無界的阻塞隊列,其所含對象的排序不是FIFO而是依據對象的自然排序順序或者是構造函數的Comparator決定的順序

SynchronousQueue:特殊的BlockingQueue,對其的操作必須是放和取交替完成的

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM