Cum se implementează interfața BlockingQueue în Java



Acest articol vă va oferi o cunoaștere detaliată și cuprinzătoare despre cum să implementați o interfață BlockingQueue în Java.

O coadă este un aspect important al oricărui limbaj de programare. Mai ales dacă vorbim despre . În acest articol, vom discuta interfața BlockingQueue în Java în următoarea ordine:

Ce este o interfață BlockingQueue în Java?

O interfață BlockingQueue în Java este o coadă care se blochează atunci când încercați să scoateți din ea și coada este goală sau dacă încercați să puneți articole în ea și coada este deja plină. Un fir care încearcă să scoată din coadă goală este blocat până când un alt fir introduce un element în coadă. Un fir care încearcă să pună în coadă un articol într-o coadă completă este blocat până când un alt fir creează spațiu în coadă, fie stingând unul sau mai multe articole sau ștergând coada complet.





coadă prioritară în c ++

Interfața BlockingQueue în Java nu acceptănulvalori și aruncareNullPointerExceptiondacă încercați să stocați valoarea nulă în coadă.Implementările Java BlockingQueue sunt fir de siguranta . Toate metodele de așteptare sunt de natură atomică și utilizează încuietori interne sau alte forme de control al concurenței.



Diagrama clasei cozii Java

în cele din urmă și finalizați în java

Interfața Java Queue extinde interfața Colecție. Interfața Colecție extinde interfața Iterable. Unele dintre clasele de implementare a cozii utilizate frecvent sunt LinkedList, PriorityQueue, ArrayBlockingQueue, DelayQueue, LinkedBlockingQueue, PriorityBlockingQueue,etc .. AbstractQueue oferă o implementare scheletică a interfeței Queue pentru a reduce efortul de implementare a cozii.

Tipuri de blocare

BlockingQueue sunt două tipuri:



  • Coadă nelimitată: Capacitatea cozii de blocare va fi setată la Integer.MAX_VALUE. În cazul cozii de blocare nelimitate, coada nu se va bloca niciodată, deoarece ar putea crește până la o dimensiune foarte mare. atunci când adăugați elemente, dimensiunea crește.

Sintaxă:
BlockingQueue coada de blocare = new LinkedBlockingDeque ()

  • Coadă delimitată: Al doilea tip de coadă este coada delimitată. În cazul cozii delimitate, puteți crea o coadă ocolind capacitatea cozii în constructorul cozilor:
    Sintaxă:
    // Creează o coadă de blocare cu capacitatea 5

Coada de blocare BlockingQueue = new LinkedBlockingDeque (5)

Metode în interfața BlockingQueue

Schimbați tipul Sintaxa metodei Folosit pentru Descriere
boolean adăugați (E și) Inserare

Inserează elementul specificat în această coadă dacă este posibil să se facă acest lucru imediat fără a încălca restricțiile de capacitate, revenind la adevărat la succes și aruncând o IllegalStateException dacă în prezent nu există spațiu disponibil.

boolean conține (Obiectul o) Examina

Returnează adevărat dacă această coadă conține elementul specificat.

int drainTo (Colecția c) Preluarea sau eliminarea

Elimină toate elementele disponibile din această coadă și le adaugă la colecția dată.

int drainTo (Colecția c, int maxElements) Preluarea sau eliminarea

Elimină cel mult numărul dat de elemente disponibile din această coadă și le adaugă la colecția dată.

boolean oferta (E și) Inserare

Inserează elementul specificat în această coadă dacă este posibil să se facă acest lucru imediat fără a încălca restricțiile de capacitate, revenind la adevărat la succes și fals dacă nu există spațiu disponibil în prezent.

boolean oferta (E e, expirare lungă, unitate TimeUnit) Inserare

Inserează elementul specificat în această coadă, așteptând până la timpul de așteptare specificat, dacă este necesar pentru ca spațiul să devină disponibil.

ESTE sondaj (timeout lung, unitate TimeUnit) Preluarea sau eliminarea

Preluează și elimină capul acestei cozi, așteptând până la timpul de așteptare specificat, dacă este necesar pentru ca un element să devină disponibil.

nul pune (E e) Inserare

Inserează elementul specificat în această coadă, așteptând dacă este necesar ca spațiul să devină disponibil.

int capacitate ramasa () Examina

Returnează numărul de elemente suplimentare pe care această coadă le poate accepta în mod ideal (în absența constrângerilor de memorie sau de resurse) fără blocare sau Integer.MAX_VALUE dacă nu există o limită intrinsecă.

boolean elimina (Obiectul o) + Preluarea sau eliminarea

Elimină o singură instanță a elementului specificat din această coadă,dacă este prezent.

ce este sub șir în java
ESTE lua() Preluarea sau eliminarea

Preluează și elimină capul acestei cozi, așteptând dacă este necesar până când un element devine disponibil.

Interfață BlockingQueue în Java Exemplu: Serviciu

package com.journaldev.concurrency import java.util.concurrent.ArrayBlockingQueue import java.util.concurrent.BlockingQueue public class ProducerConsumerService {public static void main (String [] args) {// Creating BlockingQueue of size 10 BlockingQueue queue = new ArrayBlockingQue 10) Producător producător = producător nou (coadă) Consumator consumator = consumator nou (coadă) // producătorul inițial care produce mesaje în coadă fir nou (producător) .start () // consumatorul inițial consumă mesaje din coadă fir nou (consumator) .start () System.out.println ('Producătorul și consumatorul a fost pornit')}}

Cu aceasta, ajungem la sfârșitul articolului BlockingQueue Interface în Java. Sper că toate conceptele tale sunt acum clare.

Verificați de Edureka, o companie de învățare online de încredere, cu o rețea de peste 250.000 de elevi mulțumiți răspândiți pe tot globul. Cursul de formare și certificare Java J2EE și SOA al Edureka este conceput pentru studenți și profesioniști care doresc să fie dezvoltator Java. Cursul este conceput pentru a vă oferi un început important în programarea Java și pentru a vă instrui atât pentru conceptele Java de bază, cât și pentru cele avansate, împreună cu diverse cadre Java, cum ar fi Hibernate & Spring.

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii a acestui blog „Interfață BlockingQueue în Java” și vă vom contacta cât mai curând posibil.