Kako implementirati BlockingQueue sučelje u Javi



Ovaj će vam članak pružiti detaljno i sveobuhvatno znanje o tome kako implementirati BlockingQueue sučelje u Javi.

Red čekanja važan je aspekt bilo kojeg programskog jezika. Pogotovo ako razgovaramo o . U ovom ćemo članku raspravljati o sučelju BlockingQueue u Javi sljedećim redoslijedom:

Što je sučelje BlockingQueue u Javi?

Sučelje BlockingQueue u Javi je red koji se blokira kada pokušate iz njega izaći iz reda, a red je prazan ili ako pokušate u njega staviti stavke u red, a red je već popunjen. Nit koja pokušava izbaciti red iz praznog reda blokira se dok neka druga nit ne umetne stavku u red čekanja. Nit koja pokušava staviti u red stavku u punom redu blokira se sve dok neka druga nit ne napravi mjesta u redu, dekekuliranjem jedne ili više stavki ili potpuno čišćenjem reda.





red prioriteta u c ++

BlockingQueue sučelje u Javi ne prihvaćanullvrijednosti i bacitiNullPointerExceptionako pokušate pohraniti null vrijednost u red čekanja.Implementacije Java BlockingQueue su bez niti . Sve metode čekanja su atomske prirode i koriste unutarnje brave ili druge oblike kontrole paralelnosti.



Dijagram klase Java reda čekanja

Sučelje Java Queue proširuje sučelje Collection. Sučelje Collection proširuje Iterable sučelje. Neke od često korištenih klasa implementacije reda su LinkedList, PriorityQueue, ArrayBlockingQueue, DelayQueue, LinkedBlockingQueue, PriorityBlockingQueue,itd. AbstractQueue pruža skeletnu implementaciju sučelja reda čekanja kako bi se smanjio napor u implementaciji reda čekanja.

Tipovi reda blokiranja

BlockingQueue su dvije vrste:



  • Neograničeni red čekanja: Kapacitet reda za blokiranje postavit će se na Integer.MAX_VALUE. U slučaju neograničenog reda za blokiranje, red se nikada neće blokirati jer bi mogao narasti do vrlo velike veličine. kad dodate elemente, veličina raste.

Sintaksa:
BlockingQueue red za blokiranje = novi LinkedBlockingDeque ()

što su kuhar i lutka
  • Ograničeni red čekanja: Druga vrsta reda je ograničeni red. U slučaju ograničenog reda, možete stvoriti red zaobilazeći kapacitet reda u konstruktoru redova:
    Sintaksa:
    // Stvara red za blokiranje kapaciteta 5

BlockingQueue red za blokiranje = novi LinkedBlockingDeque (5)

Metode u sučelju BlockingQueue

Promijenite vrstu Sintaksa metode Koristi za Opis
boolean dodaj (E i) Umetanje

Umetne navedeni element u ovaj red ako je to moguće učiniti odmah bez kršenja ograničenja kapaciteta, vraćanjem true nakon uspjeha i bacanjem IllegalStateException ako trenutno nema slobodnog prostora.

boolean sadrži (objekt o) Ispitati, pregledati

Vraća true ako ovaj red sadrži navedeni element.

int drainTo (Zbirka c) Dohvaćanje ili uklanjanje

Uklanja sve dostupne elemente iz ovog reda i dodaje ih u zadanu zbirku.

int drainTo (Zbirka c, int maxElements) Dohvaćanje ili uklanjanje

Uklanja najviše zadani broj dostupnih elemenata iz ovog reda i dodaje ih u zadanu zbirku.

print_r u niz
boolean ponuda (E i) Umetanje

Umetne navedeni element u ovaj red ako je to moguće učiniti odmah bez kršenja ograničenja kapaciteta, vraćajući true nakon uspjeha i false ako trenutno nema slobodnog prostora.

boolean ponuda (E e, dugo čekanje, jedinica vremenske jedinice) Umetanje

Umetne navedeni element u ovaj red, čekajući do određenog vremena čekanja ako je potrebno da prostor postane dostupan.

JE anketa (dugo čekanje, jedinica vremenske jedinice) Dohvaćanje ili uklanjanje

Dohvaća i uklanja glavu ovog reda, čekajući do određenog vremena čekanja ako je potrebno da element postane dostupan.

poništiti staviti (E e) Umetanje

U ovaj element unosi navedeni element, čekajući ako je potrebno da prostor postane dostupan.

int preostali kapacitet () Ispitati, pregledati

Vraća broj dodatnih elemenata koje ovaj red može idealno (u nedostatku ograničenja memorije ili resursa) prihvatiti bez blokiranja ili Integer.MAX_VALUE ako nema unutarnjeg ograničenja.

boolean ukloniti (Objekt o) + Dohvaćanje ili uklanjanje

Uklanja jednu instancu navedenog elementa iz ovog reda,ako je prisutan.

JE uzeti() Dohvaćanje ili uklanjanje

Dohvaća i uklanja glavu ovog reda, po potrebi čekajući dok element ne postane dostupan.

Sučelje BlockingQueue u Javi Primjer: usluga

paket com.journaldev.concurrency import java.util.concurrent.ArrayBlockingQueue import java.util.concurrent.BlockingQueue javna klasa ProducerConsumerService {public static void main (String [] args) {// Stvaranje BlockingQueue veličine 10 BlockingQueueueloueQueueloue = New Array queue = new ArrayQueueloue 10) Proizvođač proizvođač = novi proizvođač (red čekanja) Potrošač potrošač = novi potrošač (red čekanja) // početni proizvođač za izradu poruka u redu čekanja nova nit (proizvođač) .start () // početni potrošač za trošenje poruka iz reda nova nit (potrošač) .start () System.out.println ('Pokrenut je proizvođač i potrošač')}}

Ovim smo došli do kraja članka BlockingQueue Interface u Javi. Nadam se da su svi vaši koncepti sada jasni.

Pogledajte Edureka, pouzdane tvrtke za internetsko učenje s mrežom od više od 250 000 zadovoljnih učenika raširenih širom svijeta. Edurekin tečaj za obuku i certificiranje Java J2EE i SOA namijenjen je studentima i profesionalcima koji žele biti programer Java. Tečaj je dizajniran da vam pruži početnu prednost u Java programiranju i osposobi vas za osnovne i napredne Java koncepte zajedno s raznim Java okvirima poput Hibernate & Spring.

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare ovog bloga „BlockingQueue Interface u Javi“ i javit ćemo vam se što je prije moguće.