Maison  >  Article  >  Java  >  Quelle est la différence entre ArrayBlockingQueue et LinkedBlockingQueue ?

Quelle est la différence entre ArrayBlockingQueue et LinkedBlockingQueue ?

王林
王林avant
2023-08-26 11:53:08737parcourir

Quelle est la différence entre ArrayBlockingQueue et LinkedBlockingQueue ?

L'interface de file d'attente de blocage fait partie du package Java.util.concurrent. Les files d'attente de blocage sont conçues pour les files d'attente producteur-consommateur et prennent également en charge les collectes. L'interface est divisée en quatre parties de méthodes prenant en charge tous les types d'opérations sur la file d'attente. Il n'accepte pas les clés vides. ArrayBlockingQueue et LinkedBlockingQueue implémentent tous deux l'interface de file d'attente de blocage

ArrayBlockingQueue et LinkedBlockingQueue stockent les éléments dans l'ordre FIFO. Dans les deux files d'attente, l'insertion d'éléments se produit toujours en fin de file d'attente et la suppression d'éléments se produit toujours en tête de file d'attente. "Numéro de série" est soutenu par un tableau

Il est soutenu par une liste chaînée 2 Bounded3Débit4.Lock
C'est une file d'attente de tableau délimitée. Ainsi, une fois créée, la capacité ne peut pas être modifiée

Il s'agit d'une file d'attente illimitée

Il a un débit inférieur à celui de la file d'attente chaînée

Montant supérieur à celui du tableau file d'attente basée

Il utilise un algorithme bi-conditionnel à verrouillage unique

Il a putLock pour insérer des éléments dans la file d'attente et pour insérer des éléments de la file d'attente takeLock pour supprimer des éléments de la file d'attente

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer