ArrayBlockingQueue Vs. Exemple de file d'attente d'expulsion non bloquante Google Guava

Publié: 2020-12-29
ArrayBlockingQueue Vs. Exemple de file d'attente d'expulsion non bloquante Google Guava

Les utilitaires de concurrence sont très étonnants en Java.

Le package java.util.concurrent contient de nombreux utilitaires que nous pourrions utiliser de différentes manières.

Dans ce tutoriel, nous allons passer en revue la différence entre java.util.concurrent. ArrayBlockingQueue et com.google.common.collect. EvictingQueue .

Qu'est-ce qu'EvictingQueue ?

EvictingQueue fait partie de Google's Guava library . Qui est une file d'attente non-blocking et bounded (taille fixe) qui removes automatiquement les éléments de la head de la file d'attente lors de la tentative d'ajout d'éléments à une file d' full queue .

Comment ajouter la bibliothèque Guava de Google à votre projet eclipse-java ?

Vous pouvez ajouter ci-dessous la dépendance maven au fichier pom.xml si vous utilisez le projet maven. Dans le cas d'un projet non-maven , vous devez le télécharger à partir d'ici et inclure la bibliothèque dans le chemin de classe de votre projet.

Qu'est-ce qu'ArrayBlockingQueue ?

Il s'agit d'une file d'attente blocking et bounded (taille fixe) qui stocke les éléments en interne dans un tableau. Il CAN'T stocker des quantités unlimited d'éléments. Cette file d'attente ordonne les éléments FIFO (first-in-first-out).

Read more : Exemple de file d'attente singleton

Commençons par l'exemple

  1. Créer ArrayBlockingQueue avec la taille 10
  2. Créer EvictingQueue avec la taille 10
  3. Essayez d'ajouter 15 éléments à la file d'attente
  4. Pour EvictingQueue - il ne générera aucune erreur
  5. Pour ArrayBlockingQueue - il lancera une erreur de file d' Queue Full

Créer la classe CrunchifyArrayBlockingQueueVsEvictingQueue.java

Exécutez simplement ce programme Java en tant qu'application dans la console Eclipse ou IntelliJ IDEA et vous verrez un résultat comme celui-ci.

Résultat console :

Faites-moi savoir si vous rencontrez un problème lors de l'exécution du programme ci-dessus.