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 }

浙公网安备 33010602011771号