Java ConcurrentMap 接口

Java集合框架中的ConcurrentMap接口提供了一个线程安全的Map。这意味着多个线程可以同时访问Map,而不会影响Map中条目的一致性。

ConcurrentMap被称为同步Map。

它扩展了Map接口


实现ConcurrentMap的类

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

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

Java ConcurrentHashMap interface extends the Java ConcurrentMap interface.


如何使用ConcurrentMap?

要使用ConcurrentMap,我们必须先导入java.util.concurrent.ConcurrentMap包。导入包后,我们可以这样创建一个并发Map。

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

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

这里,

  • Key - 用于将 map 中的每个元素(值)关联起来的唯一标识符
  • Value - 由键在 map 中关联的元素

ConcurrentMap的方法

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

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

  • putIfAbsent() - 如果指定的键尚未与任何值关联,则将指定的键/值插入到Map中。
  • compute() - 为指定的键及其先前映射的值计算一个条目(键/值映射)。
  • computeIfAbsent() - 如果指定的键尚未映射到任何值,则使用指定的函数为指定的键计算一个值。
  • computeIfPresent() - 如果指定的键已映射到指定的值,则为指定的键计算一个新的条目(键/值映射)。
  • forEach() - 访问Map的所有条目并执行指定的操作。
  • 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<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);
    }
}

输出

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

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

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战