1.加入元素,包含三种方式 put add offer
put 加入元素的时候如果队列已满则会阻塞等待
| ` |
| |
| 1. final LinkedBlockingQueue<String> queue = new LinkedBlockingQueue<String>(2); |
| |
| |
| 3. for (int i = 0; i < 3; i++) { |
| |
| 4. System.out.println("add "+i); |
| |
| 5. try { |
| |
| 6. queue.put(i + ""); |
| |
| 7. } catch (InterruptedException e) { |
| |
| 8. |
| |
| 9. e.printStackTrace(); |
| |
| 10. } |
| |
| |
| 12. } |
| |
| |
| 14. System.out.println("over..."); |
| |
| |
| ` |
| |
| |
| ` |
| |
| 1. add 0 |
| |
| 2. add 1 |
| |
| 3. add 2 |
| |
| |
| ` |
| |
| |
add加入元素的时候如果队列已满则会抛出异常
| ` |
| |
| 1. final LinkedBlockingQueue<String> queue = new LinkedBlockingQueue<String>(2); |
| |
| |
| 3. for (int i = 0; i < 3; i++) { |
| |
| 4. System.out.println("add "+i); |
| |
| 5. queue.add(i + ""); |
| |
| 6. } |
| |
| |
| 8. System.out.println("over..."); |
| |
| |
| ` |
| |
| |
| ` |
| |
| 1. add 0 |
| |
| 2. add 1 |
| |
| 3. add 2 |
| |
| 4. Exception in thread "main" java.lang.IllegalStateException: Queue full |
| |
| 5. at java.util.AbstractQueue.add(AbstractQueue.java:98) |
| |
| 6. at testqueue.test.main(test.java:50) |
| |
| |
| ` |
| |
| |
offer加入元素的时候如果队列已满则会返回false
| ` |
| |
| 1. final LinkedBlockingQueue<String> queue = new LinkedBlockingQueue<String>(2); |
| |
| |
| 3. for (int i = 0; i < 3; i++) { |
| |
| 4. System.out.println("add "+i); |
| |
| 5. System.out.println(queue.offer(i + ""));; |
| |
| 6. } |
| |
| |
| 8. System.out.println("over..."); |
| |
| |
| ` |
| |
| |
| ` |
| |
| 1. add 0 |
| |
| 2. true |
| |
| 3. add 1 |
| |
| 4. true |
| |
| 5. add 2 |
| |
| 6. false |
| |
| 7. over... |
| |
| |
| ` |
| |
| |
2.去除元素,包含三种方式take remove poll
take 如果队列为空则会阻塞等待
| ` |
| |
| 1. final LinkedBlockingQueue<String> queue = new LinkedBlockingQueue<String>(2); |
| |
| |
| 3. System.out.println("waiting for take 。。。"); |
| |
| 4. try { |
| |
| 5. System.out.println("remove " + queue.take()); |
| |
| 6. } catch (InterruptedException e) { |
| |
| 7. |
| |
| 8. e.printStackTrace(); |
| |
| 9. } |
| |
| 10. System.out.println("take over。。。"); |
| |
| |
| ` |
| |
| |
remove 如果队列为空则会抛出异常
| ` |
| |
| 1. final LinkedBlockingQueue<String> queue = new LinkedBlockingQueue<String>(2); |
| |
| |
| 3. System.out.println("waiting for remove 。。。"); |
| |
| 4. System.out.println("remove " + queue.remove()); |
| |
| 5. System.out.println("remove over。。。"); |
| |
| |
| ` |
| |
| |
| ` |
| |
| 1. waiting for remove 。。。 |
| |
| 2. Exception in thread "main" java.util.NoSuchElementException |
| |
| 3. at java.util.AbstractQueue.remove(AbstractQueue.java:117) |
| |
| 4. at testqueue.test.main(test.java:49) |
| |
| |
| ` |
| |
| |
poll 如果队列为空会返回null
| ` |
| |
| 1. final LinkedBlockingQueue<String> queue = new LinkedBlockingQueue<String>(2); |
| |
| |
| 3. System.out.println("waiting for poll 。。。"); |
| |
| 4. System.out.println("remove " + queue.poll()); |
| |
| 5. System.out.println("poll over。。。"); |
| |
| |
| ` |
| |
| |
| ` |
| |
| 1. waiting for poll 。。。 |
| |
| 2. remove null |
| |
| 3. poll over。。。 |
| |
| |
| ` |
| |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
2021-11-11 ssm整合