HashMap 是 Java 中一种键值对映射的集合,它使用哈希表来存储键值对。HashMap 具有插入和删除元素效率高的优势,但不是线程安全的。
ConcurrentHashMap 是 Java 中一种线程安全的 HashMap,它使用分段锁来保证线程安全。ConcurrentHashMap 具有 HashMap 的所有优势,并且还具有线程安全的特性。
ConcurrentHashMap 的工作原理是将哈希表分为多个段,每个段使用一个锁来保护。当多个线程同时访问同一个段时,会使用锁来同步访问,从而保证线程安全。
ConcurrentHashMap 的优点是线程安全,可以同时被多个线程访问。缺点是效率略低于 HashMap,因为需要使用锁来同步访问。
ConcurrentHashMap 的使用示例:
Java
import java.util.concurrent.ConcurrentHashMap;
public class ConcurrentHashMapExample {
public static void main(String[] args) {
ConcurrentHashMap map = new ConcurrentHashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
System.out.println(map.get("a")); // 1
System.out.println(map.get("b")); // 2
System.out.println(map.get("c")); // 3