ArrayBlockingQueue 是基于数组的有界阻塞队列,线程安全、FIFO,支持阻塞/超时/非阻塞操作;缺点是容量固定、单锁性能受限、不支持 null、迭代器弱一致性;适用于中等并发、容量可控场景。

ArrayBlockingQueue 是 Java 并发包(java.util.concurrent)中一个经典的**有界阻塞队列**,底层基于数组实现,线程安全,适合生产者-消费者模型。它支持 FIFO(先进先出)顺序,且在容量满或空时,相关操作会阻塞调用线程(可选超时)。
常用核心方法
入队方法:
-
put(E e):阻塞式插入,若队列满则一直等待,直到有空间;不可中断(除非被中断,抛InterruptedException)。 -
offer(E e):非阻塞插入,成功返回true,队列满则立即返回false。 -
offer(E e, long timeout, TimeUnit unit):带超时的插入,最多等待指定时间,超时仍无空间则返回false。
出队方法:
-
take():阻塞式获取并移除队首元素,若队列空则一直等待;同样可被中断。 -
poll():非阻塞获取并移除,队列空时返回null。 -
poll(long timeout, TimeUnit unit):带超时的获取,超时未取到则返回null。
查看与状态方法:
立即学习“Java免费学习笔记(深入)”;
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~