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?
- Tipus de cua de bloqueig
- Mètodes a la interfície BlockingQueue
- Interfície BlockingQueue a Java Exemple: servei
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.
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.