HashMap 的常见线程安全替代类有哪些?

1 个回答

  • 柳青莲
    活在别人的言论下,是对自己的不尊重。
    `HashMap` 的常见线程安全替代类主要有: **1. `Hashtable`** * **实现方式**:方法上加 `synchronized`,整张表加锁。 * **优点**:实现简单,线程安全。 * **缺点**:锁粒度大,竞争严重,性能差。 **2. `Collections.synchronizedMap(Map<K,V> m)`** * **实现方式**:用 `synchronized` 包装普通 `Map`(如 `HashMap`)。 * **优点**:快速让现有 `Map` 线程安全。 * **缺点**:锁粒度依然是整张表,性能跟 `Hashtable` 差不多。 **3. `ConcurrentHashMap`(推荐)** * **JDK 7**:基于 **Segment 分段锁**(`ReentrantLock`) * **JDK 8**:去掉 Segment,改为 **CAS + synchronized + Node 数组**,并在链表长时转为红黑树。 * **优点**:锁粒度小,性能好,支持高并发。 * **缺点**:实现复杂,占用更多内存。 **4. 其他并发 Map 实现** * `ConcurrentSkipListMap`:基于跳表,支持有序键值对,适合范围查询,高并发性能也好。
    发布于 2025-08-13 05:17 •IP属地 陕西
    举报
    评论
    收藏