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?
- Wachtrijtypen blokkeren
- Methoden in BlockingQueue-interface
- BlockingQueue-interface in Java Voorbeeld: Service
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.
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.