Hogyan lehet megvalósítani a BlockingQueue felületet a Java-ban

Ez a cikk részletes és átfogó ismereteket nyújt a BlockingQueue interfész Java-ban történő megvalósításáról.

A várakozási sor minden programozási nyelv fontos szempontja. Különösen, ha erről beszélünk . Ebben a cikkben a következő sorrendben tárgyaljuk a Java BlockingQueue felületét:



Mi a BlockingQueue interfész a Java-ban?

A Java-ban található BlockingQueue interfész egy olyan sor, amely akkor blokkol, amikor megpróbál eltávolítani belőle, és a sor üres, vagy ha elemeket próbál meg sorolni rá, és a sor már megtelt. Az üres sorból eltávolítani próbáló szál blokkolva van, amíg más szál nem helyez be egy elemet a sorba. Az a szál, amely megpróbál egy elemet felsorolni a teljes várólistában, addig blokkolódik, amíg valamelyik másik szál helyet nem teremtenek a sorban, vagy egy vagy több elem eltávolításával, vagy a sor teljes törlésével.



elsőbbségi sor c ++ -ban

A BlockingQueue felület a Java-ban nem fogadja elnullaértékek és dobásNullPointerExceptionha megpróbálja eltárolni a null értéket a sorban.A Java BlockingQueue megvalósítások szálbiztos . Valamennyi várólista-módszer atomi jellegű, és belső zárakat vagy a párhuzamosság-ellenőrzés egyéb formáit használja.



hibrid keretrendszer szelén web meghajtóban

Java Queue osztály diagram

A Java Queue interfész kiterjeszti a Gyűjtemény felületet. A Collection felület kiterjeszti az Iterable felületet. Néhány gyakran használt várólista megvalósítási osztály a LinkedList, a PriorityQueue, a ArrayBlockingQueue, a DelayQueue, a LinkedBlockingQueue, a PriorityBlockingQueue, stb. Az AbstractQueue a Queue felület csontvázszerű megvalósítását biztosítja a Queue megvalósításával kapcsolatos erőfeszítések csökkentése érdekében.

BlockingQueue Types

A BlockingQueue kétféle lehet:



  • Korlátlan sor: A blokkolási sor kapacitása Integer.MAX_VALUE lesz. Korlátlan blokkolási sor esetén a sor soha nem fog blokkolni, mert nagyon nagyra nőhet. elemek hozzáadásával nő a mérete.

Szintaxis:
BlockingQueue blocking queue = new LinkedBlockingDeque ()

  • Korlátozott sor: A második sortípus a korlátozott sor. A korlátozott sor esetén létrehozhat egy sort a sor kapacitásának megkerülésével a sorok konstruktorában:
    Szintaxis:
    // Blokkoló várólistát hoz létre 5-ös kapacitással

BlockingQueue blocking queue = új LinkedBlockingDeque (5)

Módszerek a BlockingQueue felületen

Típus módosítása Módszer szintaxisa Használt Leírás
logikai érték add (E és) Beszúrás

Beszúrja a megadott elemet ebbe a sorba, ha a kapacitáskorlátozások megsértése nélkül azonnal megtehető, a siker után igazra tér vissza, és ha nincs szabad hely, akkor IllegalStateException-t dob.

logikai érték tartalmazza (o objektum) Megvizsgálni

Igaz értéket ad vissza, ha ez a sor tartalmazza a megadott elemet.

int drainTo (c gyűjtemény) Letöltés vagy eltávolítás

Eltávolítja az összes rendelkezésre álló elemet ebből a sorból, és hozzáadja őket az adott gyűjteményhez.

int drainTo (c gyűjtemény, int maxElements) Letöltés vagy eltávolítás

Legfeljebb az elérhető számú elemet távolítja el ebből a sorból, és felveszi őket az adott gyűjteménybe.

logikai érték ajánlat (E és) Beszúrás

Beilleszti a megadott elemet ebbe a sorba, ha ezt azonnal megteheti a kapacitáskorlátozások megsértése nélkül, a siker után igazra és hamisra tér vissza, ha jelenleg nincs szabad hely.

logikai érték ajánlat (E e, hosszú időtúllépés, TimeUnit egység) Beszúrás

Beszúrja a megadott elemet ebbe a sorba, várakozva a megadott várakozási időig, ha szükséges, hogy rendelkezésre álljon hely.

IS közvélemény-kutatás (hosszú időtúllépés, TimeUnit egység) Letöltés vagy eltávolítás

Letölti és eltávolítja ennek a sornak a fejét, várakozva a megadott várakozási időig, ha szükséges egy elem elérhetővé válásához.

üres put (E e) Beszúrás

Beszúrja a megadott elemet ebbe a sorba, várva, ha szükséges, hogy rendelkezésre álljon hely.

int fennmaradó kapacitás () Megvizsgálni

Visszaadja a további elemek számát, amelyeket ez a sor ideális esetben (memória- vagy erőforrás-korlátok hiányában) blokkolás nélkül elfogad, vagy Integer.MAX_VALUE, ha nincs belső korlát.

logikai érték távolítsa el (o objektum) + Letöltés vagy eltávolítás

Eltávolítja a megadott elem egyetlen példányát ebből a sorból, ha jelen van.

IS vesz() Letöltés vagy eltávolítás

Letölti és eltávolítja ennek a sornak a fejét, szükség esetén megvárva, amíg egy elem elérhetővé válik.

BlockingQueue interfész a Java-ban Példa: Szolgáltatás

com.journaldev.concurrency import java.util.concurrent.ArrayBlockingQueue import java.util.concurrent.BlockingQueue public class ProducerConsumerService {public static void main (String [] args) {// BlockingQueue of size 10 blockingQueueBayue (new Array) létrehozása 10) Producer producer = new Producer (várólista) .start () System.out.println ('A gyártó és a fogyasztó elindult')}}

Ezzel véget értünk a Java-ban a BlockingQueue felületről. Remélem, hogy minden koncepciója világos.

Nézze meg a az Edureka, egy megbízható online tanulási vállalat, amelynek több mint 250 000 elégedett tanulóval rendelkező hálózata elterjedt az egész világon. Az Edureka Java J2EE és SOA képzését és tanúsító tanfolyamát olyan hallgatók és szakemberek számára tervezték, akik Java fejlesztők szeretnének lenni. A tanfolyamot úgy tervezték meg, hogy előrelépést nyújtson a Java programozásban, és képezze mind az alapvető, mind a fejlett Java koncepciókhoz, valamint a különböző Java keretrendszerekhez, például a Hibernate & Spring.

Van egy kérdésünk? Kérjük, említse meg a „BlockingQueue Interface in Java” blog megjegyzés rovatában, és a lehető leghamarabb kapcsolatba lépünk Önnel.