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?
- Tipos de BlockingQueue
- Métodos na interface BlockingQueue
- Interface BlockingQueue em Java Exemplo: serviço
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.
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.