Queue接口-ArrayBlockingQueue

Queue接口-ArrayBlockingQueue

  1 import java.util.concurrent.ArrayBlockingQueue;
  2 
  3 public class DemoClass4Queue {
  4    public static void main(String[] args) throws Exception {
  5          //TODO Queue 接口  Array Blocking(阻塞,堵住)   Queue
  6       /*
  7       * 1,add() 方法,如果数据增加不了,直接报错误
  8       * */
  9       /*ArrayBlockingQueue arrayBlockingQueue = new ArrayBlockingQueue(3);
 10       arrayBlockingQueue.add("zhangsan");
 11       arrayBlockingQueue.add("lisi");
 12       arrayBlockingQueue.add("wangwu");
 13 
 14       System.out.println(arrayBlockingQueue);  //[zhangsan, lisi, wangwu]
 15 
 16       arrayBlockingQueue.add("zhaoliu"); //报错误:Queue full
 17       System.out.println(arrayBlockingQueue);*/
 18 
 19       /*
 20        * 2. put()方法,如果数据增加不了,直接堵塞,下面代码不执行了
 21        * */
 22       /*ArrayBlockingQueue queue = new ArrayBlockingQueue(3);
 23       queue.put("zhangsan");
 24       queue.put("lisi");
 25       queue.put("wangwu");
 26       queue.put("zhaoliu");
 27 
 28       System.out.println(queue);  //没有报错误,但是zhaoliu这里堵塞了,所以println不执行了*/
 29 
 30 
 31 /*      ArrayBlockingQueue queue = new ArrayBlockingQueue(3);
 32       queue.put("zhangsan");
 33       System.out.println("第一个挂号:");
 34       queue.put("lisi");
 35       System.out.println("第二个挂号:");
 36       queue.put("wangwu");
 37       System.out.println("第三个挂号:");
 38       queue.put("zhaoliu");
 39       System.out.println("第四个挂号:");
 40 
 41       System.out.println(queue);*/
 42 
 43       /*
 44       * 输出结果: 说明代码执行着里,就是因为:zhaoliu 堵塞了,下面的代码不执行了
 45       *  第一个挂号:
 46          第二个挂号:
 47          第三个挂号:
 48       * */
 49 
 50       /*
 51       * 3. offer方法,add() put()方法不合理,用offer解决,错误代码返回false,并跳过错误,下面代码的继续执行
 52       * */
 53 /*      ArrayBlockingQueue queue = new ArrayBlockingQueue(3);
 54       boolean zhangsan = queue.offer("zhangsan");
 55       System.out.println("第一个挂号:"+zhangsan);
 56       boolean lisi = queue.offer("lisi");
 57       System.out.println("第二个挂号:"+lisi);
 58       boolean wangwu = queue.offer("wangwu");
 59       System.out.println("第三个挂号:"+wangwu);
 60       boolean zhaoliu = queue.offer("zhaoliu");
 61       System.out.println("第四个挂号:"+zhaoliu);
 62 
 63       System.out.println(queue);*/
 64       /*
 65       * 执行结果:
 66       *  第一个挂号:true
 67          第二个挂号:true
 68          第三个挂号:true
 69          第四个挂号:false
 70          [zhangsan, lisi, wangwu]
 71       * */
 72 
 73       /*
 74       * 4. poll() 取出方法,集合里取出一个,集合里立马就少一个,集合为空了,取出也是null,不会堵塞程序
 75       * */
 76       ArrayBlockingQueue queue = new ArrayBlockingQueue(3);
 77       boolean zhangsan = queue.offer("zhangsan");
 78       boolean lisi = queue.offer("lisi");
 79       boolean wangwu = queue.offer("wangwu");
 80 
 81       //取出第一个,输出结果
 82       /*
 83       *zhangsan
 84       [lisi, wangwu]
 85       * */
 86       /*System.out.println(queue.poll());
 87       System.out.println(queue);*/
 88 
 89       //取出第二个,输出结果
 90       /*
 91       *lisi
 92       [wangwu]
 93       * */
 94      /* queue.poll();
 95       System.out.println(queue.poll());
 96       System.out.println(queue);*/
 97       //*** 如果集合里没有了,再poll()的时候,返回null,能取到null,不会被堵塞
 98 
 99       /*
100       * 5. task() 取出方法,集合里取出一个,集合里立马就少一个,集合为空了,程序堵塞
101       * 输出结果:
102       * zhangsan
103          lisi
104          wangwu
105       * */
106       System.out.println(queue.take());
107       System.out.println(queue.take());
108       System.out.println(queue.take());
109       System.out.println(queue.take());
110       System.out.println(queue);
111       //*** 如果集合里没有,在task()的时候,系统就堵塞了,系统卡住
112 
113       /*
114       * 6.
115       * */
116       /*queue.clear();
117       queue.size();
118       queue.contains("");
119       queue.isEmpty();
120       queue.clear();*/
121    }
122 }

 

posted @ 2025-10-20 14:03  字节虫  阅读(9)  评论(0)    收藏  举报