Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java 线程安全的map

作者:故事只剩听说   发布日期:2025-08-03   浏览:36

import java.util.concurrent.ConcurrentHashMap;

public class ThreadSafeMapExample {
    public static void main(String[] args) {
        // 创建一个线程安全的Map
        ConcurrentHashMap<String, Integer> threadSafeMap = new ConcurrentHashMap<>();

        // 添加键值对
        threadSafeMap.put("Apple", 1);
        threadSafeMap.put("Banana", 2);
        threadSafeMap.put("Orange", 3);

        // 获取值
        System.out.println("Value for Apple: " + threadSafeMap.get("Apple"));

        // 使用computeIfAbsent方法,线程安全地计算并添加新值
        threadSafeMap.computeIfAbsent("Grape", key -> 4);
        System.out.println("Value for Grape: " + threadSafeMap.get("Grape"));

        // 遍历Map
        threadSafeMap.forEach((key, value) -> {
            System.out.println("Key: " + key + ", Value: " + value);
        });
    }
}

解释说明:

  1. ConcurrentHashMapConcurrentHashMap 是 Java 提供的一个线程安全的 Map 实现。它在多线程环境下比 synchronized 包装的 HashMap 更高效,因为它使用了分段锁(Segment)机制,允许多个线程同时读写不同的部分。

  2. put 方法:用于向 ConcurrentHashMap 中添加键值对。它是线程安全的,多个线程可以同时调用 put 方法而不会导致数据不一致。

  3. get 方法:用于获取指定键对应的值。同样也是线程安全的。

  4. computeIfAbsent 方法:这是一个非常有用的原子操作方法,当指定的键不存在时,它会根据提供的映射函数计算并插入新的值。这个过程是线程安全的,避免了显式的同步代码。

  5. forEach 方法:用于遍历 ConcurrentHashMap 中的所有键值对。遍历过程中即使有其他线程修改了 Map,也不会抛出 ConcurrentModificationException,而是保证可见性。

通过这些特性,ConcurrentHashMap 提供了高效的线程安全性,适用于高并发场景下的键值对存储和访问。

上一篇:java判断int类型不为空

下一篇:java 邮件发送

大家都在看

java连接数据库的代码

ubuntu 卸载java

java读取excel中的图片

java新建

java sort用法

java collections.sort

java file类的方法

java 判断

java时间数据类型

java实体类转json字符串

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站