Hoe BlockingQueue-interface in Java te implementeren



Dit artikel biedt u een gedetailleerde en uitgebreide kennis van hoe u een BlockingQueue-interface in Java implementeert.

Een wachtrij is een belangrijk aspect van elke programmeertaal. Vooral als we erover praten . In dit artikel bespreken we de BlockingQueue-interface in Java in de volgende volgorde:

Wat is een BlockingQueue-interface in Java?

Een BlockingQueue-interface in Java is een wachtrij die wordt geblokkeerd wanneer u probeert de wachtrij eruit te halen en de wachtrij leeg is, of wanneer u items erin probeert te plaatsen en de wachtrij al vol is. Een thread die probeert uit een lege wachtrij te komen, wordt geblokkeerd totdat een andere thread een item in de wachtrij invoegt. Een thread die een item in een volledige wachtrij probeert te plaatsen, wordt geblokkeerd totdat een andere thread ruimte vrijmaakt in de wachtrij, hetzij door een of meer items uit de wachtrij te halen of door de wachtrij volledig te wissen.





prioriteitswachtrij in c ++

BlockingQueue Interface in Java accepteert geennulwaarden en gooienNullPointerExceptionals u de null-waarde in de wachtrij probeert op te slaan.Java BlockingQueue-implementaties zijn draadveilig . Alle wachtrijmethoden zijn atomair van aard en gebruiken interne vergrendelingen of andere vormen van gelijktijdigheidscontrole.



Java-wachtrijklassendiagram

Java Queue-interface breidt de collectie-interface uit. De collectie-interface breidt de herhaalbare interface uit. Enkele van de vaak gebruikte Queue-implementatieklassen zijn LinkedList, PriorityQueue, ArrayBlockingQueue, DelayQueue, LinkedBlockingQueue, PriorityBlockingQueue,etc .. AbstractQueue biedt een skeletimplementatie van de Queue-interface om de inspanning bij het implementeren van Queue te verminderen.

beste java ide voor ubuntu

Wachtrijtypen blokkeren

De BlockingQueue zijn twee soorten:



  • Onbegrensde wachtrij: De capaciteit van de blokkeerwachtrij wordt ingesteld op Integer.MAX_VALUE. In het geval van een onbegrensde blokkeerwachtrij, zal de wachtrij nooit blokkeren omdat deze kan uitgroeien tot een zeer grote omvang. als je elementen toevoegt, wordt het groter.

Syntaxis:
BlockingQueue blokkerende wachtrij = nieuwe LinkedBlockingDeque ()

  • Begrensde wachtrij: Het tweede type wachtrij is de begrensde wachtrij. In het geval van de begrensde wachtrij kunt u een wachtrij maken waarbij de capaciteit van de wachtrij in de wachtrijconstructor wordt omzeild:
    Syntaxis:
    // Creëert een blokkeerwachtrij met capaciteit 5

BlockingQueue blokkerende wachtrij = nieuwe LinkedBlockingDeque (5)

Methoden in BlockingQueue-interface

Van type veranderen Methode Syntaxis Gebruikt voor Omschrijving
boolean toevoegen (E en) Invoeging

Voegt het gespecificeerde element in deze wachtrij in als het mogelijk is om dit onmiddellijk te doen zonder capaciteitsbeperkingen te schenden, waarbij true wordt geretourneerd bij succes en een IllegalStateException wordt gegenereerd als er momenteel geen ruimte beschikbaar is.

boolean bevat (Object o) Onderzoeken

Geeft true terug als deze wachtrij het opgegeven element bevat.

int drainTo (Collectie c) Ophalen of verwijderen

Verwijdert alle beschikbare elementen uit deze wachtrij en voegt ze toe aan de gegeven verzameling.

int drainTo (Collectie c, int maxElements) Ophalen of verwijderen

Verwijdert maximaal het opgegeven aantal beschikbare elementen uit deze wachtrij en voegt ze toe aan de opgegeven verzameling.

wat betekent toevoegen in java
boolean aanbieding (E en) Invoeging

Voegt het gespecificeerde element in deze wachtrij in als het mogelijk is om dit onmiddellijk te doen zonder capaciteitsbeperkingen te schenden, waarbij true wordt geretourneerd bij succes en false als er momenteel geen ruimte beschikbaar is.

boolean aanbieding (E e, lange time-out, TimeUnit-eenheid) Invoeging

Voegt het opgegeven element in deze wachtrij in en wacht indien nodig tot de opgegeven wachttijd voordat er ruimte beschikbaar komt.

IS poll (lange time-out, TimeUnit-eenheid) Ophalen of verwijderen

Haalt de kop van deze wachtrij op en verwijdert deze, en wacht indien nodig tot de opgegeven wachttijd voordat een element beschikbaar komt.

leegte zet (E e) Invoeging

Voegt het opgegeven element in deze wachtrij in en wacht indien nodig tot er ruimte beschikbaar komt.

int resterende capaciteit () Onderzoeken

Retourneert het aantal aanvullende elementen dat deze wachtrij idealiter (bij afwezigheid van geheugen- of bronbeperkingen) kan accepteren zonder te blokkeren, of Integer.MAX_VALUE als er geen intrinsieke limiet is.

boolean verwijder (Object o) + Ophalen of verwijderen

Verwijdert een enkele instantie van het opgegeven element uit deze wachtrij,als het aanwezig is.

IS nemen() Ophalen of verwijderen

Haalt de kop van deze wachtrij op en verwijdert deze, indien nodig wachtend tot een element beschikbaar komt.

BlockingQueue-interface in Java Voorbeeld: Service

pakket com.journaldev.concurrency import java.util.concurrent.ArrayBlockingQueue import java.util.concurrent.BlockingQueue public class ProducerConsumerService {public static void main (String [] args) {// Creëren van BlockingQueue van grootte 10 BlockingQueue queue = nieuwe ArrayBlocking 10) Producent producer = nieuwe Producer (wachtrij) Consument consument = nieuwe Consument (wachtrij) // beginnende producent om berichten in wachtrij te produceren nieuwe Thread (producent) .start () // Beginnende consument om berichten uit wachtrij te consumeren nieuwe Thread (consument) .start () System.out.println ('Producent en consument is gestart')}}

c ++ fibonacci recursief

Hiermee komen we aan het einde van het artikel BlockingQueue Interface in Java. Ik hoop dat al uw concepten nu duidelijk zijn.

Bekijk de door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld. Edureka's Java J2EE en SOA training en certificering zijn bedoeld voor studenten en professionals die Java Developer willen worden. De cursus is bedoeld om u een voorsprong te geven in het programmeren van Java en u te trainen in zowel de kern als geavanceerde Java-concepten, samen met verschillende Java-frameworks zoals Hibernate & Spring.

Heeft u een vraag voor ons? Vermeld het in het commentaargedeelte van deze blog 'BlockingQueue Interface in Java' en we nemen zo snel mogelijk contact met u op.