- 阻塞队列
队列是一种先进先出的数据结构。元素被追加到队列末尾,然后从队列头删除。
在优先队列中,元素被赋予优先级,当访问元素的时候,拥有最高优先级的元素首先被删除。
阻塞队列在试图向一个满队列添加元素或者从空队列中删除元素时会导致线程阻塞。
java中阻塞队列的实现由java.util.concurrent.BlockingQueue接口提供,该接口扩展了java.util.Queue,并且提供同步的put和take方法向队列尾部添加元素,以及从队列头部删除元素。
java中提供了java.util.concurrent.BlockingQueue接口的以下几种实现:
(1)ArrayBlockingQueue:使用数组实现阻塞队列,必须指定一个容量或者可选的公平性来构造。
(2)LinkedBlockingQueue:使用链表实现,可以创建不受限的或受限的队列。
(3)PriorityBlockingQueue:优先队列,可以创建不受限的或受限的优先队列。
注:对于不受限的队列,put方法永远不会阻塞。
阻塞队列和前面说的同步和锁的不