问题来自Java技术沙龙的尚小琦
Java线下沙龙报名链接:https://yq.aliyun.com/activity/796
1)HashTable是线程安全的,其提供的public方法上都加了synchronized关键字,效率是比较低的;
2)HashMap是非线程安全的,多线程操作会导致并发冲突异常,单线程场景高效;
3)ConcurrentHashMap是线程安全的,与HashTable的实现机制不同,并没有通过加synchronized关键字的方式实现同步锁,在java8之前它是通过分段(segment)锁的方式来实现的,降低并发冲突,但是在java8中实现方式上有所调整,采取按行加锁,进一步降低并发冲突概率,具体可以参考jdk8源码实现
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。