LinkedBlockingQueue的3对易混API

目录

3对API结论

放入测试

取出测试

 

3对API结论

Level.放入 取出 
1add队列满?异常:return trueremove队列空?异常:return head
2offer队列满?return false:return truepoll队列空?return null:return head
3put队列满?阻塞:return [void]take队列空?阻塞:return head

放入测试

public static void main(String[] args) throws Exception {
       new Thread(() -> {
            BlockingQueue<String> queue = new LinkedBlockingQueue<>(1);
            try {
                queue.put("1");
                queue.put("1"); //满时阻塞
                System.out.println("不打印我");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }).start();

        new Thread(() -> {
            BlockingQueue<String> queue = new LinkedBlockingQueue<>(1);
            System.out.println("offer1"+queue.offer("1"));
            System.out.println("offer2"+queue.offer("1"));//满时返回false
        }).start();

        new Thread(() -> {
            BlockingQueue<String> queue = new LinkedBlockingQueue<>(1);
            System.out.println("add1"+queue.add("1"));
            System.out.println("add2"+queue.add("1"));//满时异常
        }).start();


       
    }

offer1true
offer2false
add1true
Exception in thread "Thread-2" java.lang.IllegalStateException: Queue full
    at java.util.AbstractQueue.add(AbstractQueue.java:98)
    at com.construn.vehicle.common.core.monitor.App.lambda$main$2(App.java:30)
    at com.construn.vehicle.common.core.monitor.App$$Lambda$3/1982791261.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:745)

 


public static void main(String[] args) throws Exception {

         new Thread(() -> {
            BlockingQueue<String> queue = new LinkedBlockingQueue<>(Lists.newArrayList("AAA"));
            try {
                System.out.println("take1"+queue.take());
                System.out.println("take2"+queue.take()); //空时阻塞
                System.out.println("不打印我");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }).start();

        new Thread(() -> {
            BlockingQueue<String> queue = new LinkedBlockingQueue<>(Lists.newArrayList("AAA"));
            System.out.println("poll1"+queue.poll());
            System.out.println("poll2"+queue.poll());//空时返回null
        }).start();

        new Thread(() -> {
            BlockingQueue<String> queue = new LinkedBlockingQueue<>(Lists.newArrayList("AAA"));
            System.out.println("remove1"+queue.remove());
            System.out.println("remove2"+queue.remove());//空时异常
        }).start();




    }

remove1AAA
poll1AAA
poll2null
take1AAA
Exception in thread "Thread-2" java.util.NoSuchElementException
    at java.util.AbstractQueue.remove(AbstractQueue.java:117)
    at com.construn.vehicle.common.core.monitor.App.lambda$main$2(App.java:54)
    at com.construn.vehicle.common.core.monitor.App$$Lambda$3/1982791261.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:745)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值