ArrayBlockingQueue在java的入队

admin 百科 10
ArrayBlockingQueue入队操作有add、offer、put和带超时的offer四种方式:add失败抛异常;offer失败返回false;put阻塞直至成功;带超时offer最多等待指定时间后返回结果。

ArrayBlockingQueue在java的入队-第1张图片-佛山资讯网

ArrayBlockingQueue 是 Java 并发包(java.util.concurrent)中一个基于数组实现的有界阻塞队列。它的入队操作(即向队尾添加元素)有多种方式,核心区别在于**是否阻塞、是否抛异常、是否超时等待**。

add(E e):失败直接抛异常

尝试将元素加入队尾,如果队列已满,立即抛出 IllegalStateException("Queue full")。适合明确要求“必须成功或快速失败”的场景。

不推荐在生产中无保护地使用,容易因队满导致程序中断。

offer(E e):失败返回 false

尝试入队,成功返回 true,队满则返回 false,不阻塞也不抛异常。最常用、最安全的非阻塞入队方式。

  • 适合需要主动控制流程的场景,比如做重试、降级或记录日志
  • 示例:if (!queue.offer(task)) { log.warn("队列已满,丢弃任务: " + task); }

put(E e):阻塞直到成功

将元素加入队尾;如果队列已满,当前线程会**一直阻塞**,直到有空间可用(其他线程出队腾出位置)。适用于“必须入队,且能接受等待”的业务逻辑。

立即学习“Java免费学习笔记(深入)”;

标签: java 区别

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~