4.【基础题】HashMap了解吗?介绍一下它对应的线程安全版本。
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")); // 1System.out.println(map.get("b")); // 2System.out.println(map.get("c")); // 3