У цьому підручнику ми дізнаємося про інтерфейс Java ConcurrentMap та його методи.
ConcurrentMap
Інтерфейс рамок колекцій Java надає поточно-карту. Тобто, декілька потоків можуть отримати доступ до карти одночасно, не впливаючи на узгодженість записів на карті.
ConcurrentMap
відомий як синхронізована карта.
Він розширює інтерфейс Map.
Клас, який реалізує ConcurrentMap
Оскільки ConcurrentMap
це інтерфейс, ми не можемо створювати з нього об'єкти.
Для того, щоб використовувати функціональні можливості ConcurrentMap
інтерфейсу, нам потрібно використовувати клас, ConcurrentHashMap
який його реалізує.
Як використовувати ConcurrentMap?
Щоб використовувати ConcurrentMap
, java.util.concurrent.ConcurrentMap
спочатку потрібно імпортувати пакет. Як тільки ми імпортуємо пакет, ось як ми можемо створити одночасну карту.
// ConcurrentMap implementation by ConcurrentHashMap CocurrentMap numbers = new ConcurrentHashMap();
У наведеному вище коді ми створили одночасну карту з іменами чисел.
Ось,
- Ключ - унікальний ідентифікатор, який використовується для асоціювання кожного елемента (значення) на карті
- Значення - елементи, пов'язані ключами на карті
Методи ConcurrentMap
ConcurrentMap
Інтерфейс включає в себе всі методи Map
інтерфейсу. Це тому, що Map
є супер інтерфейсом ConcurrentMap
інтерфейсу.
Окрім усіх цих методів, ось методи, специфічні для ConcurrentMap
інтерфейсу.
- putIfAbsent () - Вставляє вказаний ключ / значення на карту, якщо вказаний ключ ще не пов'язаний з яким-небудь значенням.
- compute () - Обчислює запис (зіставлення ключа / значення) для вказаного ключа та його раніше зіставленого значення.
- computeIfAbsent () - Обчислює значення, використовуючи вказану функцію для вказаного ключа, якщо ключ ще не зіставлений з яким-небудь значенням.
- computeIfPresent () - Обчислює новий запис (зіставлення ключа / значення) для вказаного ключа, якщо ключ уже зіставлений із зазначеним значенням.
- forEach () - отримати доступ до всіх записів карти та виконати зазначені дії.
- merge () - об'єднує нове вказане значення зі старим значенням зазначеного ключа, якщо ключ уже зіставлений з певним значенням. Якщо ключ ще не зіставлений, метод просто асоціює вказане значення з нашим ключем.
Щоб дізнатись більше, відвідайте Java ConcurrentMap (офіційна документація Java).
Реалізація ConcurrentMap у 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); ) )
Вихідні дані
ConcurrentMap: (One = 1, Two = 2, Three = 3) Доступне значення: 1 Видалене значення: 2
Щоб дізнатись більше про це ConcurrentHashMap
, відвідайте Java ConcurrentHashMap.