Hur man implementerar BlockingQueue-gränssnittet i Java



Den här artikeln ger dig en detaljerad och omfattande kunskap om hur du implementerar ett BlockingQueue-gränssnitt i Java.

En kö är en viktig aspekt av alla programmeringsspråk. Speciellt om vi pratar om . I den här artikeln kommer vi att diskutera BlockingQueue-gränssnittet i Java i följande ordning:

Vad är ett BlockingQueue-gränssnitt i Java?

Ett BlockingQueue-gränssnitt i Java är en kö som blockeras när du försöker gå från den och kön är tom, eller om du försöker lägga in objekt till den och kön är redan full. En tråd som försöker dequeue från en tom kö blockeras tills någon annan tråd infogar ett objekt i kön. En tråd som försöker stänga in ett objekt i en fullständig kö blockeras tills någon annan tråd ger plats i kön, antingen genom att dequeuera ett eller flera objekt eller rensa kön helt.





prioritetskö i c ++

BlockingQueue-gränssnittet i Java accepterar intenullvärden och kastNullPointerExceptionom du försöker lagra nollvärdet i kön.Java BlockingQueue-implementeringar är trådsäker . Alla kömetoder är atomära och använder interna lås eller andra former av samtidighetskontroll.



Java kö klassdiagram

Java-kögränssnittet utökar samlingsgränssnittet. Samlingsgränssnittet utökar det interaktiva gränssnittet. Några av de ofta använda köimplementeringsklasserna är LinkedList, PriorityQueue, ArrayBlockingQueue, DelayQueue, LinkedBlockingQueue, PriorityBlockingQueue,etc .. AbstractQueue ger en skelettimplementering av kögränssnittet för att minska ansträngningen att implementera kö.

BlockingQueue-typer

BlockingQueue är två typer:



  • Obegränsad kö: Blockeringsköns kapacitet kommer att ställas in på Integer.MAX_VALUE. När det gäller obegränsad blockeringskön kommer kö aldrig att blockeras eftersom den kan växa till mycket stor storlek. när du lägger till element växer storleken.

Syntax:
BlockingQueue blocking queue = new LinkedBlockingDeque ()

  • Avgränsad kö: Den andra typen av kö är den avgränsade köen. I händelse av den avgränsade kön kan du skapa en kö förbi köns kapacitet i kökonstruktören:
    Syntax:
    // Skapar en blockeringskö med kapacitet 5

BlockingQueue blocking queue = new LinkedBlockingDeque (5)

Metoder i BlockingQueue-gränssnittet

Ändra typ Metodsyntax Används för Beskrivning
booleska lägg till (E och) Införande

Infogar det angivna elementet i den här kön om det är möjligt att göra det omedelbart utan att bryta mot kapacitetsbegränsningar.

hur man konverterar dubbelt till int i java
booleska innehåller (Objekt o) Undersöka

Returnerar sant om den här kön innehåller det angivna elementet.

int drainTo (samling c) Hämtning eller borttagning

Tar bort alla tillgängliga element från den här kön och lägger till dem i den givna samlingen.

int drainTo (Collection c, int maxElements) Hämtning eller borttagning

Tar högst bort det angivna antalet tillgängliga element från den här kön och lägger till dem i den givna samlingen.

booleska erbjudande (E och) Införande

Infogar det angivna elementet i den här kön om det är möjligt att göra det omedelbart utan att bryta mot kapacitetsbegränsningar, returnera true efter framgång och falskt om inget utrymme är tillgängligt för närvarande.

booleska erbjudande (E e, lång timeout, TimeUnit-enhet) Införande

Infogar det angivna elementet i den här kön och väntar upp till den angivna väntetiden om det behövs för att utrymme ska bli tillgängligt.

ÄR omröstning (lång tidsavbrott, TimeUnit-enhet) Hämtning eller borttagning

Hämtar och tar bort huvudet på denna kö, väntar upp till den angivna väntetiden om det behövs för att ett element ska bli tillgängligt.

tomhet sätta (E e) Införande

Infogar det angivna elementet i den här kön och väntar vid behov på att utrymme blir tillgängligt.

int återstående kapacitet () Undersöka

Returnerar antalet ytterligare element som den här kön idealt kan acceptera (i avsaknad av minne eller resursbegränsningar) utan att blockera, eller Integer.MAX_VALUE om det inte finns någon inneboende gräns.

booleska ta bort (Objekt o) + Hämtning eller borttagning

Tar bort en enda instans av det angivna elementet från den här kön,om den är närvarande.

vad är skillnaden mellan xml och html
ÄR ta() Hämtning eller borttagning

Hämtar och tar bort huvudet på denna kö, väntar vid behov tills ett element blir tillgängligt.

BlockingQueue-gränssnitt i Java Exempel: Service

paketet com.journaldev.concurrency import java.util.concurrent.ArrayBlockingQueue import java.util.concurrent.BlockingQueue public class ProducerConsumerService {public static void main (String [] args) {// Skapa BlockingQueue av storlek 10 BlockingQueue queue = new ArrayBing 10) Producentproducent = ny producent (kö) Konsumentkonsument = ny konsument (kö) // startande producent för att producera meddelanden i kö ny tråd (producent) .start () // start konsument att konsumera meddelanden från kö ny tråd (konsument) .start () System.out.println ('Producent och konsument har startats')}}

Med detta kommer vi till ett slut på BlockingQueue-gränssnittet i Java-artikeln. Jag hoppas att alla dina koncept nu är klara.

Kolla in av Edureka, ett pålitligt inlärningsföretag online med ett nätverk av mer än 250 000 nöjda elever spridda över hela världen. Edurekas Java J2EE- och SOA-utbildning och certifieringskurs är utformad för studenter och yrkesverksamma som vill vara Java-utvecklare. Kursen är utformad för att ge dig ett försprång till Java-programmering och träna dig för både kärn- och avancerade Java-koncept tillsammans med olika Java-ramverk som Hibernate & Spring.

Har du en fråga till oss? Vänligen nämna det i kommentarsektionen i denna 'BlockingQueue Interface in Java' -blogg så kommer vi tillbaka till dig så snart som möjligt.