BlockingQueue四组API实现方式

image.png
//方式一
@Test
    public void test1() {
        ArrayBlockingQueue<Object> blockingQueue = new ArrayBlockingQueue<>(3);
        System.out.println(blockingQueue.add("a"));
        System.out.println(blockingQueue.add("b"));
        System.out.println(blockingQueue.add("c"));
        // java.lang.IllegalStateException  添加超过三个就会显示异常
//        System.out.println(blockingQueue.add("d"));
        System.out.println("========================");
        // 检测队首元素
        System.out.println(blockingQueue.element());

        System.out.println(blockingQueue.remove());
        System.out.println(blockingQueue.remove());
        System.out.println(blockingQueue.remove());
        //  java.util.NoSuchElementException  获取没有的也会有异常
//        System.out.println(blockingQueue.remove());
    }

    // 方式二
    @Test
    public void test2() {
        ArrayBlockingQueue<Object> blockingQueue = new ArrayBlockingQueue<>(3);
        System.out.println(blockingQueue.offer("a"));
        System.out.println(blockingQueue.offer("b"));
        System.out.println(blockingQueue.offer("c"));
        // 不抛出异常直接返回fasle
        System.out.println(blockingQueue.offer("d"));
        System.out.println("========================");
        // 检测队首元素
        System.out.println(blockingQueue.peek());

        System.out.println(blockingQueue.poll());
        System.out.println(blockingQueue.poll());
        System.out.println(blockingQueue.poll());
        // 没有会返回null
        System.out.println(blockingQueue.poll());
    }
 // 方式三
    @Test
    public void test3() throws Exception{
        ArrayBlockingQueue<Object> blockingQueue = new ArrayBlockingQueue<>(3);
        blockingQueue.put("a");
        blockingQueue.put("B");
        blockingQueue.put("C");
        // 如果有多余的就会一直堵塞
//        blockingQueue.put("D");



        System.out.println(blockingQueue.take());
        System.out.println(blockingQueue.take());
        System.out.println(blockingQueue.take());
        // 如果有多余的就会一直堵塞
//        System.out.println(blockingQueue.take());
    }
 // 方式死延迟
    @Test
    public void test4() throws Exception{
        ArrayBlockingQueue<Object> blockingQueue = new ArrayBlockingQueue<>(3);
        blockingQueue.offer("a");
        blockingQueue.offer("B");
        blockingQueue.offer("C");
        // 如果有多余就会在多少秒之后执行
        blockingQueue.offer("D",2, TimeUnit.SECONDS);



        System.out.println(blockingQueue.poll());
        System.out.println(blockingQueue.poll());
        System.out.println(blockingQueue.poll());
        // 如果有多余的就会一直堵塞
        System.out.println(blockingQueue.poll(2,TimeUnit.SECONDS));
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容