ConcurrentHashMap基于JDK1.8源码剖析 (2)

上面简单介绍了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,大家也可以去交流交流。谢谢支持了!希望能多介绍给其他有需要的朋友

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxsdg.html