Java中哪些Map是线程安全的?

HashTable

HashTable类里面的 get 和 put 方法都是用 synchronized 关键字来修饰的,同时只能有一个线程操作 get 或者 put,效率比较低,一般不建议使用这个集合,目前已经很少使用了。

SynchronizedMap

SynchronizedMap的实现方式是加了个对象锁,每次对Map的操作都要先获取对象锁才能进入,所以性能也不算好。

ConcurrentHashMap

ConcurrentHashMap 比较复杂,每个版本的实现方式也不一样,在jdk8之前用的是分段加锁,分成16个桶,每次只加锁其中一个桶,在jdk8里面加入了红黑树和CAS算法。

相关推荐
©️2020 CSDN 皮肤主题: 护眼 设计师:闪电赇 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值