简介
BlockingDeque是Java中一个用于实现阻塞双端队列的接口,主要是用于多线程环境中,可以在队列的两端添加和移除元素。
特点
- **双端队列:**允许在队列的两端(头部和尾部)进行插入和移除元素
- **阻塞操作:**当队列为空的情况下,从队列拿取数据时会一直阻塞,直到有元素为止。当队列满的情况下,添加元素的时候也会一直阻塞,直到有空间为止
- **线程安全:**BlockingDeque是线程安全的,它允许多个线程同时访问和修改队列
常用方法
插入元素
- addFirst(E e):在队列头部插入元素
- addLast(E e):在队列尾部插入元素
- putFirst(E e):在队列头部插入元素,如果队列为满,则等待
- putLast(E e):在队列尾部插入元素,如果队列为满,则等待
初始化双端队列容量为1,使用addFirst(非阻塞方法)在队列头部添加元素,再通过putFirst(阻塞方法)添加元素时,会阻塞一直等待,直到队列有空间为止
初始化双端队列容量为1,使用putFirst(阻塞方法)添加元素后,再通过addFirst(非阻塞方法)添加元素就会直接报队列满的异常
移除元素
- removeFirst():移除并返回队列头部的元素
- removeLast():移除并返回队列尾部的元素
- taskFirst():移除并返回队列头部的元素,如果队列为空,则等待
- taskLast():移除并返回队列尾部的元素,如果队列为空,则等待
使用非阻塞方法移除队列数据时,队列为空的情况会直接抛出异常,不会进行阻塞等待
使用阻塞方法移除队列数据时,队列为空的情况会一直进行阻塞等待,直接有元素为止
检测元素
- peekFirst():获取但不移除队列头部的元素
- peekLast():获取但不移除队列尾部的元素
在CSDN上,一键三连是对作者辛勤创作的最好鼓励!喜欢我的文章,就请点赞、收藏、转发吧!你们的支持是我持续分享知识的动力,感谢大家的陪伴与认可!💖🔝🔄