Neste tutorial, aprenderemos sobre a interface Java ConcurrentMap e seus métodos.
A ConcurrentMap
interface da estrutura de coleções Java fornece um mapa thread-safe. Ou seja, vários threads podem acessar o mapa de uma vez, sem afetar a consistência das entradas em um mapa.
ConcurrentMap
é conhecido como mapa sincronizado.
Ele estende a interface do Mapa.
Classe que implementa ConcurrentMap
Por ConcurrentMap
ser uma interface, não podemos criar objetos a partir dela.
Para usar as funcionalidades da ConcurrentMap
interface, precisamos usar a classe ConcurrentHashMap
que a implementa.
Como usar o ConcurrentMap?
Para usar o ConcurrentMap
, devemos importar o java.util.concurrent.ConcurrentMap
pacote primeiro. Depois de importar o pacote, veja como podemos criar um mapa simultâneo.
// ConcurrentMap implementation by ConcurrentHashMap CocurrentMap numbers = new ConcurrentHashMap();
No código acima, criamos um mapa simultâneo denominado números.
Aqui,
- Chave - um identificador único usado para associar cada elemento (valor) em um mapa
- Valor - elementos associados por chaves em um mapa
Métodos de ConcurrentMap
A ConcurrentMap
interface inclui todos os métodos da Map
interface. É porque Map
é a super interface da ConcurrentMap
interface.
Além de todos esses métodos, aqui estão os métodos específicos da ConcurrentMap
interface.
- putIfAbsent () - Insere a chave / valor especificado no mapa se a chave especificada ainda não estiver associada a nenhum valor.
- compute () - Calcula uma entrada (mapeamento de chave / valor) para a chave especificada e seu valor mapeado anteriormente.
- computeIfAbsent () - Calcula um valor usando a função especificada para a chave especificada se a chave ainda não estiver mapeada com nenhum valor.
- computeIfPresent () - Calcula uma nova entrada (mapeamento de chave / valor) para a chave especificada se a chave já estiver mapeada com o valor especificado.
- forEach () - Acesse todas as entradas de um mapa e execute as ações especificadas.
- merge () - Mescla o novo valor especificado com o valor antigo da chave especificada se a chave já estiver mapeada para um determinado valor. Se a chave ainda não estiver mapeada, o método simplesmente associa o valor especificado à nossa chave.
Para saber mais, visite Java ConcurrentMap (documentação oficial do Java).
Implementação de ConcurrentMap em ConcurrentHashMap
import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentHashMap; class Main ( public static void main(String() args) ( // Creating ConcurrentMap using ConcurrentHashMap ConcurrentMap numbers = new ConcurrentHashMap(); // Insert elements to map numbers.put("Two", 2); numbers.put("One", 1); numbers.put("Three", 3); System.out.println("ConcurrentMap: " + numbers); // Access the value of specified key int value = numbers.get("One"); System.out.println("Accessed Value: " + value); // Remove the value of specified key int removedValue = numbers.remove("Two"); System.out.println("Removed Value: " + removedValue); ) )
Resultado
ConcurrentMap: (Um = 1, Dois = 2, Três = 3) Valor Acessado: 1 Valor Removido: 2
Para saber mais sobre ConcurrentHashMap
, visite Java ConcurrentHashMap.