📜  Java中的 BlockingQueue remove() 方法及示例(1)

📅  最后修改于: 2023-12-03 14:42:44.718000             🧑  作者: Mango

Java中的 BlockingQueue remove() 方法及示例

BlockingQueue 是一个常见的 Java 集合类,它实现了一个先进先出的队列,支持阻塞读取和写入。其中的 remove() 方法用于从队列中移除一个元素,并将该元素作为该方法的返回值返回。

方法签名
E remove() throws InterruptedException
参数说明

无参数。

返回值说明

移除的元素。

异常说明
  • InterruptedException:如果当前线程被中断,抛出该异常。
示例
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

public class BlockingQueueDemo {
    public static void main(String[] args) throws InterruptedException {
        BlockingQueue<Integer> queue = new LinkedBlockingQueue<>(2);

        // 向队列中加入两个元素
        queue.put(1);
        queue.put(2);

        // 移除并打印队首元素
        int first = queue.remove();
        System.out.println("队首元素:" + first);

        // 再次移除并打印队首元素
        int second = queue.remove();
        System.out.println("队首元素:" + second);

        // 移除一个元素,报错!
        int third = queue.remove();
        System.out.println("队首元素:" + third);
    }
}

上述示例中,我们定义了一个 BlockingQueue 类型的队列,并向其加入了两个元素。然后我们分别调用了 remove() 方法两次,从队列中移除并打印队首元素。最后,我们再次调用了 remove() 方法,但是队列此时为空,移除操作将导致抛出异常。

运行上述代码,输出如下:

队首元素:1
队首元素:2
Exception in thread "main" java.util.NoSuchElementException
	at java.util.concurrent.LinkedBlockingQueue.remove(LinkedBlockingQueue.java:525)
	at BlockingQueueDemo.main(BlockingQueueDemo.java:19)

可见,第三次调用 remove() 方法时,确实抛出了 NoSuchElementException 异常。