ArrayBlockingQueue 对比Google Guava 非阻塞 EvictingQueue 示例

已发表: 2020-12-29
ArrayBlockingQueue 对比Google Guava 非阻塞 EvictingQueue 示例

并发实用程序在 Java 中非常棒。

java.util.concurrent 包包含许多实用程序,我们可以以多种不同的方式使用它们。

在本教程中,我们将讨论 java.util.concurrent 之间的区别。 ArrayBlockingQueue和 com.google.common.collect。 EvictingQueue

什么是驱逐队列?

EvictingQueueGoogle's Guava library一部分。 这是一个non-blockingbounded (固定大小)队列,当尝试将元素添加到full queue时,它会自动从队列head removes元素。

如何将 Google 的 Guava 库添加到您的 eclipse-java 项目中?

如果您使用的是 maven 项目,您可以将以下 maven 依赖项添加到 pom.xml 文件中。 如果non-maven项目——你必须从这里下载它并将库包含到你项目的类路径中。

什么是 ArrayBlockingQueue?

它是一个blocking的、 bounded (固定大小)队列,将元素内部存储在一个数组中。 它CAN'T存储unlimited数量的元素。 此队列对元素进行FIFO (先进先出)排序。

Read more :单例队列示例

让我们开始示例

  1. 创建大小为 10 的 ArrayBlockingQueue
  2. 创建大小为 10 的 EvictingQueue
  3. 尝试将 15 个元素添加到队列中
  4. 对于 EvictingQueue - 它不会抛出任何错误
  5. 对于 ArrayBlockingQueue——它会抛出Queue Full错误

创建类 CrunchifyArrayBlockingQueueVsEvictingQueue.java

只需在 Eclipse 控制台或 IntelliJ IDEA 中将这个 Java 程序作为应用程序运行,您就会看到这样的结果。

控制台结果:

如果您在运行上述程序时遇到任何问题,请告诉我。