如下是我写的简单例子:spa
值得深思的4段代码,第一段曾经引发过很重大的事故。这些都是我简化的代码。.net
// 1. // BlockingQueue queue = new LinkedBlockingQueue(5); // for(int i =0;i<20;i++){ // queue.put(i); // System.out.println(i); // // } // System.out.println("阻塞了主线程"); // new Thread(()->{ // for(int i =0;i<20;i++){ // try { // System.out.println(queue.take()); // } catch (InterruptedException e) { // e.printStackTrace(); // } // } // });
// 2. // BlockingQueue queue = new LinkedBlockingQueue(5); // for(int i =0;i<20;i++){ // queue.put(i); // // } // for(int i =0;i<20;i++){ // System.out.println(queue.take()); // } // 3. // BlockingQueue queue = new LinkedBlockingQueue(5); // for(int i =0;i<20;i++){ // queue.put(i); // System.out.println(queue.offer(i)); // // } // 4. // BlockingQueue queue = new LinkedBlockingQueue(25); // for(int i =0;i<20;i++){ // queue.put(i); // // } // for(int i =0;i<20;i++){ // System.out.println(queue.take()); // }
抛出异常 | 特殊值 | 阻塞 | 超时 | |
插入 | add(e) |
offer(e) |
put(e) |
offer(e, time, unit) |
移除 | remove() |
poll() |
take() |
poll(time, unit) |
检查 | element() |
peek() |
不可用 | 不可用 |