BlockingQueue_阻塞队列_juc

BlockingQueue

LinkedBlockingQueue,ArrayBlockingQueue

Queue:
Deque,AbstractQueue,BlockingQueue

在这里插入图片描述

加入和移除

1抛出异常的情况

    @Test
    public void test1(){
        ArrayBlockingQueue arr = new ArrayBlockingQueue<>(1);
        System.out.println(arr.add("A"));
//        System.out.println(arr.add("B"));
        //报错
        System.out.println(arr.remove());
//        System.out.println(arr.remove());
        //报错
    }

2.不抛出异常的情况

    @Test
    public void test2(){
        ArrayBlockingQueue arr = new ArrayBlockingQueue<>(1);
        System.out.println(arr.offer("A"));
        System.out.println(arr.offer("A"));//false
        System.out.println(arr.poll());
        System.out.println(arr.poll());//null
    }

3.阻塞等待

不满足的话就一直阻塞

    @Test
    public void test3() throws InterruptedException {
        ArrayBlockingQueue arrayBlockingQueue = new ArrayBlockingQueue(1);
        //一直阻塞
        arrayBlockingQueue.put("A");
        arrayBlockingQueue.put("B");
        System.out.println(arrayBlockingQueue.take());
        System.out.println(arrayBlockingQueue.take());
    }

4.超时等待

    @Test
    public void test4() throws InterruptedException {
        ArrayBlockingQueue arrayBlockingQueue = new ArrayBlockingQueue(1);
        arrayBlockingQueue.offer("A");
        arrayBlockingQueue.offer("B",2, TimeUnit.SECONDS);
    }

猜你喜欢

转载自blog.csdn.net/qq_43141726/article/details/114292155