Com implementar la interfície BlockingQueue a Java



Aquest article us proporcionarà un coneixement detallat i complet de com implementar una interfície BlockingQueue a Java.

La cua és un aspecte important de qualsevol llenguatge de programació. Sobretot si en parlem . En aquest article, parlarem de la interfície BlockingQueue a Java en l’ordre següent:

Què és una interfície BlockingQueue a Java?

Una interfície BlockingQueue a Java és una cua que es bloqueja quan proveu de deixar-la a la cua i la cua està buida, o si intenteu posar-hi elements a la cua i la cua ja està plena. Un fil que intenta eliminar la cua d'una cua buida es bloqueja fins que algun altre fil insereix un element a la cua. Un fil que intenta colar un element en una cua completa es bloqueja fins que algun altre fil fa espai a la cua, ja sigui deixant en espera un o més elements o esborrant la cua completament.





cua de prioritat a c ++

La interfície BlockingQueue a Java no acceptanulvalors i llançamentNullPointerExceptionsi intenteu emmagatzemar el valor nul a la cua.Hi ha implementacions de Java BlockingQueue aptes per a fils . Tots els mètodes de cua tenen un caràcter atòmic i utilitzen panys interns o altres formes de control de simultaneïtat.



Diagrama de classes de cua de Java

utilitzeu Python a Visual Studio

La interfície Java Queue amplia la interfície de col·lecció. La interfície de col·lecció amplia la interfície Iterable. Algunes de les classes d'implementació de cua que s'utilitzen freqüentment són LinkedList, PriorityQueue, ArrayBlockingQueue, DelayQueue, LinkedBlockingQueue, PriorityBlockingQueue,etc .. AbstractQueue proporciona una implementació esquelètica de la interfície de la cua per reduir l'esforç en la implementació de la cua.

Tipus de cua de bloqueig

La BlockingQueue és de dos tipus:



  • Cua sense límits: La capacitat de la cua de bloqueig s’establirà a Integer.MAX_VALUE. En el cas de la cua de bloqueig il·limitada, la cua no es bloquejarà mai perquè pot arribar a tenir una mida molt gran. quan afegiu elements, la mida creix.

Sintaxi:
BlockingQueue queue de bloqueig = new LinkedBlockingDeque ()

  • Cua delimitada: El segon tipus de cua és la cua delimitada. En el cas de la cua delimitada, podeu crear una cua ignorant la capacitat de la cua al constructor de cues:
    Sintaxi:
    // Crea una cua de bloqueig amb capacitat 5

BlockingQueue queue de bloqueig = new LinkedBlockingDeque (5)

Mètodes a la interfície BlockingQueue

Canvia el tipus Sintaxi del mètode Usat per Descripció
booleà afegir (E i) Inserció

Insereix l'element especificat en aquesta cua si és possible fer-ho immediatament sense infringir les restriccions de capacitat, tornant cert a l'èxit i llançant una IllegalStateException si actualment no hi ha espai disponible.

booleà conté (objecte o) Examina

Retorna cert si aquesta cua conté l'element especificat.

int drainTo (Col·lecció c) Recuperació o eliminació

Elimina tots els elements disponibles d’aquesta cua i els afegeix a la col·lecció donada.

int drainTo (Col·lecció c, int maxElements) Recuperació o eliminació

Elimina com a màxim el nombre determinat d'elements disponibles d'aquesta cua i els afegeix a la col·lecció donada.

booleà oferta (E i) Inserció

Insereix l'element especificat en aquesta cua si és possible fer-ho immediatament sense infringir les restriccions de capacitat, tornant cert a l'èxit i fals si no hi ha espai disponible actualment.

booleà oferta (E e, temps llarg, unitat TimeUnit) Inserció

Insereix l'element especificat en aquesta cua, esperant el temps d'espera especificat si cal que l'espai estigui disponible.

ÉS enquesta (temps llarg, unitat TimeUnit) Recuperació o eliminació

Recupera i elimina la capçalera d'aquesta cua, esperant el temps d'espera especificat si cal que un element estigui disponible.

buit posar (E e) Inserció

Insereix l'element especificat en aquesta cua, esperant si és necessari que l'espai estigui disponible.

int capacitat restant () Examina

Retorna el nombre d'elements addicionals que aquesta cua idealment pot acceptar (en absència de restriccions de memòria o recursos) sense bloquejar, o Integer.MAX_VALUE si no hi ha cap límit intrínsec.

booleà eliminar (objecte o) + Recuperació o eliminació

Elimina una sola instància de l'element especificat d'aquesta cua,si és present.

java com convertir el doble a int
ÉS prendre () Recuperació o eliminació

Recupera i elimina el cap d'aquesta cua, esperant si cal fins que un element estigui disponible.

Interfície BlockingQueue a Java Exemple: servei

package com.journaldev.concurrency import java.util.concurrent.ArrayBlockingQueue import java.util.concurrent.BlockingQueue public class ProducerConsumerService {public static void main (String [] args) {// Creació de BlockingQueue de mida 10 BlockingQueue queue = new ArrayBlockingQue 10) Productor productor = nou productor (cua) consumidor consumidor = nou consumidor (cua) // productor inicial per produir missatges a la cua nou fil (productor) .start () // consumidor inicial que consumeix missatges de la cua nou fil (consumidor) .start () System.out.println ('S'ha iniciat el productor i el consumidor')}}

Amb això, arribem al final de l'article BlockingQueue Interface a Java. Espero que tots els vostres conceptes siguin clars.

Consulteu el per Edureka, una empresa d'aprenentatge en línia de confiança amb una xarxa de més de 250.000 estudiants satisfets repartits per tot el món. El curs de formació i certificació Java J2EE i SOA d’Edureka està dissenyat per a estudiants i professionals que vulguin ser desenvolupador de Java. El curs està dissenyat per donar-vos un avantatge en la programació de Java i formar-vos tant per conceptes bàsics com avançats de Java, juntament amb diversos marcs Java com Hibernate i Spring.

Tens alguna pregunta? Si us plau, mencioneu-lo a la secció de comentaris d’aquest bloc “BlockingQueue Interface in Java” i us respondrem el més aviat possible.