阻塞队列
说到队列,他有一个很显著的特点就是先进先出
,由此利用这种特性,可以用来进行处理完成一些操作。阻塞队列就是其中之一
下面就是java中定义的接口
* @since 1.5
* @author Doug Lea
* @param <E> the type of elements held in this collection
*/
public interface BlockingQueue<E> extends Queue<E> {
它的主要方法如下:
作用
它的作用概括起来就是
- 添加到满时无法添加进行等待/ 报异常/ 返回是否成功
- 获取到空时无法获取进行等待/ 报异常/ 返回是否成功
就其实现之一的ArrayBlockingQueue而言
ArrayBlockingQueue
添加与删除时
public static void main(String[] args) throws InterruptedException {
BlockingQueue<String> blankQueue = new ArrayBlockingQueue<>(5);
blankQueue.take(); // 一直等待直到有值
blankQueue.remove(); //java.util.NoSuchElementException
blankQueue.poll(); // 取不到直接跳过
blankQueue.poll(2,TimeUnit.SECONDS);//2 秒取不到直接跳过
BlockingQueue<String> fullQueue = new ArrayBlockingQueue<>(5,false,Arrays.asList("1","2","3","4","5"));
fullQueue.add("6"); //java.lang.IllegalStateException: Queue full
fullQueue.offer("6");// 插不了直接跳过
fullQueue.offer("6",2,TimeUnit.SECONDS); // 2秒内插不了直接跳过
fullQueue.put("6");// 一直等待到可以插入
}
其他的阻塞队列
- LinkedBlockingQueue // 默认大小无限制 链表结构
- SynchronousQueue // 只有一个元素
- ArrayBlockingQueue // 自定义大小 数组结构
- LinkedBlockingDeque
- LinkedTransferQueue
- DelayQueue
- PriorityBlockingQueue //优先级 元素可进行比较
来源:CSDN
作者:蒜气逼人
链接:https://blog.csdn.net/wenzhouxiaomayi77/article/details/104610715