BlockingQueue 4组API
BlockingQueue 4组API
| 会抛异常 | 不抛异常,有返回值 | 阻塞 | 超时阻塞 | |
|---|---|---|---|---|
| 添加 | add | offer | put | offer(,,) | 
| 删除 | remove | poll | take | poll(,) | 
| 查询 | .element() | .peek() | -- | -- | 
代码:
package com.example.juc;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.TimeUnit;
public class TestQueue {
    public static void main(String[] args) throws InterruptedException {
        ArrayBlockingQueue queue = new ArrayBlockingQueue<>(3);
        // 添加、删除操作会抛异常 add remove element
        queue.add("a");
        queue.add("b");
        queue.add("c");
//        queue.add("d"); //IllegalStateException: Queue full
        System.out.println(queue.element()); // a 获取当前元素
        queue.remove();
        System.out.println(queue.element());// b 获取当前元素
        queue.remove();
        queue.remove();
//        queue.remove(); // NoSuchElementException
        // 添加、删除操作不会抛异常,有返回值
        System.out.println(queue.offer("a")); // true
        System.out.println(queue.offer("b")); // true
        System.out.println(queue.offer("c")); // true
        System.out.println(queue.offer("d")); // false
        System.out.println(queue.poll()); // a
        System.out.println(queue.poll()); // b
        System.out.println(queue.poll()); // c
        System.out.println(queue.poll()); // null
        System.out.println(queue.peek()); // null
        // 添加、删除操作阻塞
        queue.put("a");
        queue.put("b");
        queue.put("c");
//        queue.put("d");
        System.out.println(queue.take()); // a
        System.out.println(queue.take()); // b
        System.out.println(queue.take()); // c
//        queue.take();
        // 添加、删除操作阻塞一段时间
        System.out.println(queue.offer("a")); // true
        System.out.println(queue.offer("b")); // true
        System.out.println(queue.offer("c")); // true
        System.out.println(queue.offer("d", 1, TimeUnit.SECONDS)); // false
        System.out.println(queue.poll()); // a
        System.out.println(queue.poll()); // b
        System.out.println(queue.poll()); // c
        System.out.println(queue.poll(1, TimeUnit.SECONDS)); // null
    }
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号