📜  Java ConcurrentMap接口

📅  最后修改于: 2020-09-26 14:16:43             🧑  作者: Mango

在本教程中,我们将学习Java ConcurrentMap接口及其方法。

Java集合框架的ConcurrentMap接口提供了线程安全的映射。也就是说,多个线程可以一次访问映射,而不会影响映射中条目的一致性。

ConcurrentMap被称为同步映射。

它扩展了Map接口。


实现ConcurrentMap的类

由于ConcurrentMap是一个接口,因此我们无法从中创建对象。

为了使用ConcurrentMap接口的功能,我们需要使用实现该接口的类ConcurrentHashMap

Java ConcurrentHashMap接口扩展了Java ConcurrentMap接口。


如何使用ConcurrentMap?

要使用ConcurrentMap ,我们必须首先导入java.util.concurrent.ConcurrentMap包。导入包后,将按照以下方法创建并发映射。

// ConcurrentMap implementation by ConcurrentHashMap
CocurrentMap numbers = new ConcurrentHashMap<>();

在上面的代码中,我们创建了一个名为Numbers的并发映射。

这里,

  • -用于关联地图中每个元素(值)的唯一标识符
  • -地图中与按键相关联的元素

ConcurrentMap的方法

ConcurrentMap接口包含Map接口的所有方法。这是因为MapConcurrentMap接口的超级接口。

除了所有这些方法之外,以下是ConcurrentMap接口特定的方法。

  • putIfAbsent() -如果指定的键/值尚未与任何值关联,则将其插入到映射中。
  • compute() -计算指定键及其先前映射值的条目(键/值映射)。
  • computeIfAbsent() -如果键尚未与任何值映射,则使用指定函数为指定键计算一个值。
  • computeIfPresent() -如果已使用指定值映射键,则为指定键计算新条目(键/值映射)。
  • forEach() -访问地图的所有条目并执行指定的操作。
  • merge() -如果键已经映射到特定值,则将新的指定值与指定键的旧值合并。如果该键尚未映射,则该方法只需将指定的值与我们的键关联。

要了解更多信息,请访问Java ConcurrentMap(Java官方文档)。


ConcurrentHashMap中ConcurrentMap的实现

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}
Accessed Value: 1
Removed Value: 2

要了解有关ConcurrentHashMap更多信息,请访问Java ConcurrentHashMap。