LinkedBlockingQueue的“增加方法”包括add(失败抛IllegalStateException)、offer(失败返回false)、put(满则阻塞)和带超时的offer(超时返回false),均线程安全,默认无界。

LinkedBlockingQueue 是 Java 并发包(java.util.concurrent)中一个基于链表实现的、线程安全的阻塞队列。它的“增加方法”指的是向队列尾部插入元素的操作,主要有以下几种,按行为和异常处理方式区分:
add(E e) —— 快速失败型添加
尝试将元素插入队列尾部。如果队列已满(注意:LinkedBlockingQueue 默认是无界队列,但可指定容量),则抛出 IllegalStateException。
- 适用于明确知道队列有空间、且希望失败时立即报错的场景
- 底层调用
offer(e),若返回false就抛异常 - 示例:
queue.add("item");
offer(E e) —— 成功返回 true,失败返回 false
尝试插入元素,成功返回 true;若队列已满(比如构造时指定了固定容量),则直接返回 false,不阻塞也不抛异常。
- 适合需要非阻塞、需自行判断插入结果的逻辑
- 无界队列(默认构造)下几乎总是返回
true - 示例:
if (!queue.offer("item")) { /* 处理失败 */ }
put(E e) —— 阻塞式添加(最常用)
将元素插入队列尾部;如果队列已满,当前线程会**一直阻塞**,直到有空间可用(比如其他线程消费了元素)。
立即学习“Java免费学习笔记(深入)”;
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~