<返回更多

JAVA中常见的阻塞队列详解

2020-11-16    
加入收藏

JAVA中常见的阻塞队列详解

JAVA中常见的阻塞队列详解

并发队列

JAVA中常见的阻塞队列详解

阻塞队列特点

take方法

JAVA中常见的阻塞队列详解put方法

JAVA中常见的阻塞队列详解是否有界(容量有多大)

阻塞队列常见方法

分类 方法 含义 特点
抛出异常 add 添加一个元素 如果队列已满,添加则抛出 IllegalStateException 异常
  remove 删除队列头节点 当队列为空后,删除则抛出 NoSuchElementException 异常
  element 获取队列头元素 当队列为空时,则抛出 NoSuchElementException 异常
返回无异常 offer 添加一个元素 当队列已满,不会报异常,返回 false ,如果成功返回 true
  poll 获取队列头节点,并且删除它 当队列空时,返回 Null
  peek 单纯获取头节点 当队列为空时反馈 NULL
阻塞 put 添加一个元素 如果队列已满则阻塞
  take 返回并删除头元素 如果队列为空则阻塞

抛异常类型[add、remove、element]

add

        BlockingQueue queue = new ArrayBlockingQueue(2);
        queue.add(1);
        queue.add(2);
        queue.add(3);

JAVA中常见的阻塞队列详解

remove

    private static void groupRemove() {
        BlockingQueue queue = new ArrayBlockingQueue(2);
        queue.add("i-code.online");
        System.out.println(queue.remove());
        System.out.println(queue.remove());
    }

JAVA中常见的阻塞队列详解

element

    private static void groupElement() {
        BlockingQueue queue = new ArrayBlockingQueue(2);
        queue.add("i-code.online");
        System.out.println(queue.element());
        System.out.println(queue.element());
    }
    private static void groupElement2() {
        BlockingQueue queue = new ArrayBlockingQueue(2);
        System.out.println(queue.element());
    }

JAVA中常见的阻塞队列详解

无异常类型[offer、poll、peek]

offer

    private static void groupOffer() {
        BlockingQueue queue = new ArrayBlockingQueue(2);
        System.out.println(queue.offer("i-code.online"));
        System.out.println(queue.offer("云栖简码"));
        System.out.println(queue.offer("AnonyStar"));
    }

true
true
false

poll

    private static void groupPoll() {
        BlockingQueue queue = new ArrayBlockingQueue(2);
        System.out.println(queue.offer("云栖简码")); //添加元素
        System.out.println(queue.poll()); //取出头元素并且删除
        System.out.println(queue.poll());

    }

true
云栖简码
null

peek

    private static void groupPeek() {
        BlockingQueue queue = new ArrayBlockingQueue(2);
        System.out.println(queue.offer(1));
        System.out.println(queue.peek());
        System.out.println(queue.peek());
    }
    private static void groupPeek2() {
        BlockingQueue queue = new ArrayBlockingQueue(2);
        System.out.println(queue.peek());
    }

JAVA中常见的阻塞队列详解

阻塞类型[put、take]

put

take

常见的阻塞队列

ArrayBlockingQueue

public ArrayBlockingQueue(int capacity) {...}
public ArrayBlockingQueue(int capacity, boolean fair) {...}

LinkedBlockingQueue

SynchronousQueue

PriorityBlockingQueue

DelayQueue

public interface Delayed extends Comparable<Delayed> {
    long getDelay(TimeUnit unit);
}

本文由AnonyStar 发布,可转载但需声明原文出处。
欢迎关注微信公账号 :云栖简码 获取更多优质文章
更多文章关注笔者博客 :云栖简码 i-code.online

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>