如下是我寫的簡單例子: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() |
不可用 | 不可用 |