上面简单介绍了ConcurrentHashMap的核心知识,还有很多知识点都没有提及到,作者的水平也不能将其弄懂~~有兴趣进入的同学可到下面的链接继续学习。
下面我来简单总结一下ConcurrentHashMap的核心要点:
底层结构是散列表(数组+链表)+红黑树,这一点和HashMap是一样的。
Hashtable是将所有的方法进行同步,效率低下。而ConcurrentHashMap作为一个高并发的容器,它是通过部分锁定+CAS算法来进行实现线程安全的。CAS算法也可以认为是乐观锁的一种~
在高并发环境下,统计数据(计算size...等等)其实是无意义的,因为在下一时刻size值就变化了。
get方法是非阻塞,无锁的。重写Node类,通过volatile修饰next来实现每次获取都是最新设置的值
ConcurrentHashMap的key和Value都不能为null
参考资料:
https://blog.csdn.net/u010723709/article/details/48007881
https://blog.csdn.net/melod_bc/article/details/54150679
https://blog.csdn.net/panweiwei1994/article/details/78897275
https://www.jianshu.com/p/e694f1e868ec
明天要是无意外的话,可能会写Set集合,敬请期待哦~~~~
文章的目录导航:https://zhongfucheng.bitcron.com/post/shou-ji/wen-zhang-dao-hang
如果文章有错的地方欢迎指正,大家互相交流。习惯在微信看技术文章,想要获取更多的Java资源的同学,可以关注微信公众号:Java3y。为了大家方便,刚新建了一下qq群:742919422,大家也可以去交流交流。谢谢支持了!希望能多介绍给其他有需要的朋友