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 程序作為應用程序運行,您就會看到這樣的結果。

控制台結果:

如果您在運行上述程序時遇到任何問題,請告訴我。