ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LinkedBlockingQueue的3对易混API

2021-02-23 14:32:17  阅读:168  来源: 互联网

标签:Thread LinkedBlockingQueue System queue API println new 对易 out


目录

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)

标签:Thread,LinkedBlockingQueue,System,queue,API,println,new,对易,out
来源: https://blog.csdn.net/qq_39506978/article/details/113986914

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有