一、Collections.synchronizedMap(Map map)锁的实现方式。
=============================================================================================================
这里做一下延伸,我们简单看一下这个方法的源码,不出所料这个方法是重写了 HashMap 的方法,并且为这个 map 对象加了 synchronized 锁。如下图:
==========================================================================================
在 Java 5 之后,JDK 引入了 java.util.concurrent 并发包 ,其中最常用的就是 ConcurrentHashMap 了, 它的原理是引用了内部的 Segment ( ReentrantLock ) 分段锁,保证在操作不同段 map 的时候, 可以并发执行, 操作同段 map 的时候,进行锁的竞争和等待。从而达到线程安全, 且效率大于 synchronized。
但是在Java8之后,JDK又弃用了分段锁的策略,重新使用synchronized来实现线程安全。