Interface Java ConcurrentMap
Interface Java ConcurrentMap
Neste tutorial, aprenderemos sobre a interface Java ConcurrentMap e seus métodos.
O
ConcurrentMap
interface da estrutura de coleções Java fornece um mapa thread-safe. Ou seja, vários encadeamentos podem acessar o mapa de uma vez sem afetar a consistência das entradas em um mapa. ConcurrentMap
é conhecido como um mapa sincronizado. Ele estende a interface do Mapa.
Classe que implementa ConcurrentMap
Desde
ConcurrentMap
é uma interface, não podemos criar objetos a partir dela. Para usar as funcionalidades do
ConcurrentMap
interface, precisamos usar a classe ConcurrentHashMap
que o 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<Key, Value> numbers = new ConcurrentHashMap<>();
No código acima, criamos um mapa concorrente chamado numbers .
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
Os
ConcurrentMap
interface inclui todos os métodos do Map
interface. É porque Map
é a super interface do ConcurrentMap
interface. Além de todos esses métodos, aqui estão os métodos específicos para o
ConcurrentMap
interface. - putIfAbsent() - Insere a chave/valor especificado no mapa se a chave especificada ainda não estiver associada a nenhum valor.
- computar() - Calcula uma entrada (mapeamento de chave/valor) para a chave especificada e seu valor mapeado anteriormente.
- computarSeAusente() - Calcula um valor usando a função especificada para a chave especificada se a chave ainda não estiver mapeada com nenhum valor.
- computarSePresente() - 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.
- mesclar() - 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 do ConcurrentMap no ConcurrentHashMap
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ConcurrentHashMap;
class Main {
public static void main(String[] args) {
// Creating ConcurrentMap using ConcurrentHashMap
ConcurrentMap<String, Integer> 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);
}
}
Saída
ConcurrentMap: {One=1, Two=2, Three=3} Accessed Value: 1 Removed Value: 2
Para saber mais sobre
ConcurrentHashMap
, visite Java ConcurrentHashMap. Java