BlockingQueue 4组API

BlockingQueue 4组API

会抛异常 不抛异常,有返回值 阻塞 超时阻塞
添加 add offer put offer(,,)
删除 remove poll take poll(,)
查询 .element() .peek() -- --

代码:

package com.example.juc;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.TimeUnit;

public class TestQueue {
    public static void main(String[] args) throws InterruptedException {
        ArrayBlockingQueue queue = new ArrayBlockingQueue<>(3);

        // 添加、删除操作会抛异常 add remove element
        queue.add("a");
        queue.add("b");
        queue.add("c");
//        queue.add("d"); //IllegalStateException: Queue full
        System.out.println(queue.element()); // a 获取当前元素
        queue.remove();
        System.out.println(queue.element());// b 获取当前元素
        queue.remove();
        queue.remove();
//        queue.remove(); // NoSuchElementException

        // 添加、删除操作不会抛异常,有返回值
        System.out.println(queue.offer("a")); // true
        System.out.println(queue.offer("b")); // true
        System.out.println(queue.offer("c")); // true
        System.out.println(queue.offer("d")); // false

        System.out.println(queue.poll()); // a
        System.out.println(queue.poll()); // b
        System.out.println(queue.poll()); // c
        System.out.println(queue.poll()); // null
        System.out.println(queue.peek()); // null

        // 添加、删除操作阻塞
        queue.put("a");
        queue.put("b");
        queue.put("c");
//        queue.put("d");

        System.out.println(queue.take()); // a
        System.out.println(queue.take()); // b
        System.out.println(queue.take()); // c
//        queue.take();

        // 添加、删除操作阻塞一段时间
        System.out.println(queue.offer("a")); // true
        System.out.println(queue.offer("b")); // true
        System.out.println(queue.offer("c")); // true
        System.out.println(queue.offer("d", 1, TimeUnit.SECONDS)); // false

        System.out.println(queue.poll()); // a
        System.out.println(queue.poll()); // b
        System.out.println(queue.poll()); // c
        System.out.println(queue.poll(1, TimeUnit.SECONDS)); // null

    }
}

posted @ 2021-12-02 20:47  Oh,mydream!  阅读(29)  评论(0编辑  收藏  举报