Como implementar a interface BlockingQueue em Java



Este artigo fornecerá a você um conhecimento detalhado e abrangente de como implementar uma interface BlockingQueue em Java.

Uma fila é um aspecto importante de qualquer linguagem de programação. Especialmente se falarmos sobre . Neste artigo, discutiremos a interface BlockingQueue em Java na seguinte ordem:

O que é uma interface BlockingQueue em Java?

Uma Interface BlockingQueue em Java é uma fila que bloqueia quando você tenta desenfileirar dela e a fila está vazia, ou se você tenta enfileirar itens nela e a fila já está cheia. Um thread tentando retirar da fila de uma fila vazia é bloqueado até que algum outro thread insira um item na fila. Um encadeamento tentando enfileirar um item em uma fila cheia é bloqueado até que algum outro encadeamento abra espaço na fila, retirando da fila um ou mais itens ou limpando a fila completamente.





fila de prioridade em c ++

A interface BlockingQueue em Java não aceitanulovalores e arremessoNull Pointer Exceptionse você tentar armazenar o valor nulo na fila.Implementações Java BlockingQueue são discussão segura . Todos os métodos de enfileiramento são atômicos por natureza e usam bloqueios internos ou outras formas de controle de simultaneidade.



Diagrama de classes Java Queue

A interface Java Queue estende a interface Collection. A interface Collection estende a interface Iterable. Algumas das classes de implementação de fila usadas com frequência são LinkedList, PriorityQueue, ArrayBlockingQueue, DelayQueue, LinkedBlockingQueue, PriorityBlockingQueue,etc .. AbstractQueue fornece uma implementação esquelética da interface Queue para reduzir o esforço na implementação de Queue.

Tipos de BlockingQueue

O BlockingQueue são dois tipos:



  • Fila não limitada: A capacidade da fila de bloqueio será definida como Integer.MAX_VALUE. No caso de fila de bloqueio ilimitada, a fila nunca será bloqueada porque pode crescer para um tamanho muito grande. quando você adiciona elementos, o tamanho aumenta.

Sintaxe:
Fila de bloqueio BlockingQueue = new LinkedBlockingDeque ()

  • Fila limitada: O segundo tipo de fila é a fila limitada. No caso da fila limitada, você pode criar uma fila ignorando a capacidade da fila no construtor de filas:
    Sintaxe:
    // Cria uma fila de bloqueio com capacidade 5

Fila de bloqueio BlockingQueue = novo LinkedBlockingDeque (5)

Métodos na interface BlockingQueue

Tipo de mudança Sintaxe do método Usado para Descrição
boleano adicione (E e) Inserção

Insere o elemento especificado nesta fila se for possível fazê-lo imediatamente sem violar as restrições de capacidade, retornando true em caso de sucesso e lançando uma IllegalStateException se nenhum espaço estiver disponível no momento.

boleano contém (objeto o) Examinar

Retorna verdadeiro se esta fila contém o elemento especificado.

int DraineTo (Coleção c) Recuperando ou Remoção

Remove todos os elementos disponíveis desta fila e os adiciona à coleção fornecida.

int DraineTo (Coleção c, int maxElements) Recuperando ou Remoção

Remove no máximo o número determinado de elementos disponíveis desta fila e os adiciona à coleção fornecida.

boleano oferta (E e) Inserção

Insere o elemento especificado nesta fila se for possível fazê-lo imediatamente sem violar as restrições de capacidade, retornando verdadeiro em caso de sucesso e falso se nenhum espaço estiver disponível.

boleano oferta (E e, tempo limite longo, unidade TimeUnit) Inserção

Insere o elemento especificado nesta fila, aguardando o tempo de espera especificado, se necessário, para que o espaço fique disponível.

É poll (longo tempo limite, unidade TimeUnit) Recuperando ou Remoção

Recupera e remove o topo desta fila, aguardando até o tempo de espera especificado, se necessário, para que um elemento fique disponível.

vazio colocar (E e) Inserção

Insere o elemento especificado nesta fila, aguardando, se necessário, que o espaço se torne disponível.

int capacidade restante () Examinar

Retorna o número de elementos adicionais que esta fila pode idealmente (na ausência de restrições de memória ou recursos) aceitar sem bloqueio, ou Integer.MAX_VALUE se não houver limite intrínseco.

boleano remover (objeto o) + Recuperando ou Remoção

Remove uma única instância do elemento especificado desta fila,se estiver presente.

É levar() Recuperando ou Remoção

Recupera e remove o topo desta fila, aguardando se necessário até que um elemento esteja disponível.

Interface BlockingQueue em Exemplo Java: Serviço

pacote com.journaldev.concurrency import java.util.concurrent.ArrayBlockingQueue import java.util.concurrent.BlockingQueue public class ProducerConsumerService {public static void main (String [] args) {// Criando BlockingQueue de tamanho 10 BlockingQueue queue = new ArrayBlockingQueue ( 10) Produtor produtor = novo Produtor (fila) Consumidor consumidor = novo Consumidor (fila) // iniciando o produtor a produzir mensagens na fila novo Thread (produtor) .start () // iniciando o consumidor a consumir mensagens da fila novo Thread (consumidor) .start () System.out.println ('Produtor e consumidor foram iniciados')}}

Com isso, chegamos ao fim do artigo BlockingQueue Interface in Java. Espero que todos os seus conceitos estejam claros.

java convert double para int

Confira o pela Edureka, uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo. O curso de certificação e treinamento Java J2EE e SOA da Edureka é projetado para estudantes e profissionais que desejam ser um desenvolvedor Java. O curso foi elaborado para dar a você uma vantagem inicial na programação Java e treiná-lo para os conceitos básicos e avançados de Java, juntamente com várias estruturas Java como Hibernate e Spring.

Tem alguma questão para nós? Mencione isso na seção de comentários deste blog “BlockingQueue Interface in Java” e entraremos em contato com você o mais breve possível.