1. 程式人生 > >Java中的隊列都有哪些,有什麽區別?

Java中的隊列都有哪些,有什麽區別?

而是 隊列 style tor 刪除元素 log tails detail .net

Queue: 基本上,一個隊列就是一個先入先出(FIFO)的數據結構

Queue接口與List、Set同一級別,都是繼承了Collection接口。LinkedList實現了Deque接 口。

1、未實現阻塞接口的:
  LinkedList : 實現了Deque接口,受限的隊列
  PriorityQueue : 優先隊列,本質維護一個有序列表。可自然排序亦可傳遞 comparator構造函數實現自定義排序。
  ConcurrentLinkedQueue:基於鏈表 線程安全的隊列。增加刪除O(1) 查找O(n)

2、實現阻塞接口的:

  實現blockqueue接口的五個阻塞隊列,其特點:線程阻塞時,不是直接添加或者刪除元素,而是等到有空間或者元素時,才進行操作。

  ArrayBlockingQueue: 基於數組的有界隊列
  LinkedBlockingQueue: 基於鏈表的無界隊列
  ProiporityBlockingQueue:基於優先次序的無界隊列
  DelayQueue:基於時間優先級的隊列
  SynchronousQueue:內部沒有容器的隊列 較特別 --其獨有的線程一一配對通信機制   add 增加一個元索 如果隊列已滿,則拋出一個IIIegaISlabEepeplian異常
  remove 移除並返回隊列頭部的元素 如果隊列為空,則拋出一個NoSuchElementException異常

  element 返回隊列頭部的元素 如果隊列為空,則拋出一個NoSuchElementException異常
  offer 添加一個元素並返回true 如果隊列已滿,則返回false
  poll 移除並返問隊列頭部的元素 如果隊列為空,則返回null
  peek 返回隊列頭部的元素 如果隊列為空,則返回null
  put 添加一個元素 如果隊列滿,則阻塞
  take 移除並返回隊列頭部的元素 如果隊列為空,則阻塞
參考鏈接:https://blog.csdn.net/bn493235694/article/details/79600634

Java中的隊列都有哪些,有什麽區別?