Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Освоение ConcurrentMap в Java: потокобезопасные карты разъяснены

Интерфейс Java ConcurrentMap

Узнайте, как ConcurrentMap в Java обеспечивает потокобезопасные операции с картами, его основные методы и практический пример с ConcurrentHashMap.

Интерфейс ConcurrentMap расширяет java.util.Map и предоставляет высокопараллельную, потокобезопасную реализацию карты. Он гарантирует, что несколько потоков могут одновременно выполнять операции чтения, записи и обновления без повреждения внутреннего состояния карты.

Поскольку ConcurrentMap — интерфейс, его нельзя инстанцировать напрямую. Наиболее распространенная реализация — java.util.concurrent.ConcurrentHashMap, предлагающая бесшовные чтения и детально-гранулярные блокировки для обновлений.


Классы, реализующие ConcurrentMap

Хотя ConcurrentMap сам по себе не может быть инстанцирован, можно создать конкретную карту, используя одну из его реализаций. Де-факто стандарт — ConcurrentHashMap, но существуют альтернативы, такие как ConcurrentSkipListMap для требований отсортированной карты.


Использование ConcurrentMap

Сначала импортируйте интерфейс:

import java.util.concurrent.ConcurrentMap;

Затем создайте экземпляр ConcurrentHashMap:

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

В этом примере numbers — потокобезопасная карта, где каждый ключ String парен с значением Integer.

Ключевые концепции:


Ключевые методы ConcurrentMap

Помимо всех стандартных операций Map, ConcurrentMap вводит несколько атомарных, бесшовных методов:

Для глубокого справочника см. официальную документацию Java.


Использование ConcurrentHashMap с ConcurrentMap

import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ConcurrentHashMap;
public class Main {
    public static void main(String[] args) {
        // Создание потокобезопасной карты
        ConcurrentMap<String, Integer> numbers = new ConcurrentHashMap<>();
        // Вставка элементов
        numbers.put("Two", 2);
        numbers.put("One", 1);
        numbers.put("Three", 3);
        System.out.println("ConcurrentMap: " + numbers);
        // Получение значения
        int value = numbers.get("One");
        System.out.println("Accessed Value: " + value);
        // Удаление пары ключ/значение
        int removed = numbers.remove("Two");
        System.out.println("Removed Value: " + removed);
    }
}

Вывод

ConcurrentMap: {One=1, Two=2, Three=3} Accessed Value: 1 Removed Value: 2

Для более продвинутого использования обратитесь к документации ConcurrentHashMap.

java

  1. Освоение интерфейсов в C#: определение, реализация и практические примеры
  2. Освоение операторов Java: типы, синтаксис и практические примеры
  3. Интерфейсы в Java: концепции, реализация и лучшие практики
  4. Try-with-resources в Java: автоматическое управление ресурсами
  5. Освоение интерфейса NavigableSet в Java: навигация, сортировка и практические примеры
  6. Освоение Java Lambda-выражений: от основ к Stream API
  7. Интерфейс vs Абстрактный класс в Java: Как выбрать правильную абстракцию
  8. Интерфейсы в Java: определение, использование и лучшие практики
  9. Java 9 Private Interface Methods: инкапсуляция и повторное использование кода
  10. Освоение Java 8 Optional: Практическое руководство по коду, безопасному для null