本篇的内容是围绕哈希表来展开的,主要是通对HashMap,Hashtable,ConcurrentHashMap三者的特点去了解这它们之间的区别以及运用场景
目录
ConcurrentHashMap做出的优化(以JDK8为例)
1. HashMap
HashMap是继承与Map集合类的,其内部的方法是没有对线程安全进行处理的,所以HashMap是线程不安全的,在当今高并发的时代需要处理线程安全问题显然这种场景再使用HashMap就已经不太合适了。
所以针对多线程的开发环境就有了Hashtable和ConcurrentHashMap这两个线程安全的HashMap
2. Hashtable
Hashtable类做出的主要是针对HashMap类的主要的方法进行简单的加锁,用synchronized关键字对主要的方法进行修饰保证线程安全
原码:
put方法:
remove方法:
get方法:
优点:弥补了普通HashMap不能保证线程安全的缺点
缺点:
锁太粗问题:
通过原码我们看到为了保证map的线程安全只是给方法直接加sy