并发容器和同步容器
并发容器和同步容器
java的同步容器有Vector和Hashtable。
vecotor和hashtbale通过synchronized来锁定对容器状态的访问,例如get方法
1 |
|
同步容器类是线程安全的,但复合操作不一定是线程安全的,需要客户端额外加锁来保证线程安全。
并发容器
同步容器将所有对容器状态的访问都串行化,以实现线程安全。这种性能比较低,
java5.0 引入了并发容器,在java.util.concurrent包下面
ConcurrentHashMap
ConcurrentHashMap采用了分段锁的设计,只有在同一个分段内才存在竞态关系,不同的分段锁之间没有锁竞争。
ConcurrentHashMap是弱一致性的,get,clear都是弱一致性的