Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Dominando ConcurrentMap do Java: Mapas Thread-Safe Explicados

Interface ConcurrentMap do Java

Aprenda como o ConcurrentMap do Java fornece operações de mapa thread-safe, seus métodos principais e um exemplo prático usando ConcurrentHashMap.

A interface ConcurrentMap estende java.util.Map e fornece uma implementação de mapa altamente concorrente e thread-safe. Ela garante que múltiplas threads possam realizar operações de leitura, escrita e atualização simultaneamente sem corromper o estado interno do mapa.

Como ConcurrentMap é uma interface, você não pode instanciá-la diretamente. A implementação mais comum é java.util.concurrent.ConcurrentHashMap, que oferece leituras sem bloqueio e bloqueio de granulação fina para atualizações.

Classes que Implementam ConcurrentMap

Embora o ConcurrentMap em si não possa ser instanciado, você pode criar um mapa concreto usando uma de suas implementações. O padrão de fato é ConcurrentHashMap, mas alternativas como ConcurrentSkipListMap existem para requisitos de mapa ordenado.

Usando ConcurrentMap

Primeiro, importe a interface:

import java.util.concurrent.ConcurrentMap;

Então crie uma instância de ConcurrentHashMap:

ConcurrentMap<String, Integer> numeros = new ConcurrentHashMap<>();

Neste exemplo, numeros é um mapa thread-safe onde cada chave String é pareada com um valor Integer.

Conceitos-chave:

Métodos Principais do ConcurrentMap

Além de todas as operações padrão de Map, ConcurrentMap introduz vários métodos atômicos e sem bloqueio:

Para uma referência aprofundada, veja a documentação oficial do Java.

Usando ConcurrentHashMap com ConcurrentMap

import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ConcurrentHashMap;
public class Main {
    public static void main(String[] args) {
        // Criar um mapa thread-safe
        ConcurrentMap<String, Integer> numeros = new ConcurrentHashMap<>();
        // Inserir elementos
        numeros.put("Dois", 2);
        numeros.put("Um", 1);
        numeros.put("Três", 3);
        System.out.println("ConcurrentMap: " + numeros);
        // Recuperar um valor
        int valor = numeros.get("Um");
        System.out.println("Valor Acessado: " + valor);
        // Remover um par chave/valor
        int removido = numeros.remove("Dois");
        System.out.println("Valor Removido: " + removido);
    }
}

Saída

ConcurrentMap: {Um=1, Dois=2, Três=3} Valor Acessado: 1 Valor Removido: 2

Para uso mais avançado, consulte a documentação do ConcurrentHashMap.

Java

  1. Dominando Interfaces em C#: Definição, Implementação e Casos Práticos
  2. Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
  3. Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
  4. Dominando Try-With-Resources em Java: Gerenciamento Automático de Recursos Explicado
  5. Dominando a Interface NavigableSet do Java: Navegação, Ordenação e Exemplos Práticos
  6. Dominando Expressões Lambda em Java: Do Básico à Stream API
  7. Interface vs Classe Abstrata em Java: Como Escolher a Abstração Certa
  8. Entendendo Interfaces em Java: Definições, Usos e Boas Práticas
  9. Java 9 Métodos Privados em Interfaces: Aumentando Encapsulamento e Reuso de Código
  10. Dominando o Java 8 Optional: Guia Prático para Código Null‑Safe