HashMap和HashTable的区别?
HashTable中所有的方法都用synchronize关键词锁住, 并且以2n + 1倍进行扩容,扩容的时候并不重新计算Hash值, 所以被弃用了.
为什么在1.8中,使用synchronize来代替reentrantlock()?
1.Java开发团队在1.8中对synchronize关键字做了大量优化, 用synchronize在JVM中更加自然
2.显示锁是需要消耗内存的, 而synchronize作为语言特性,内存开销会更少.
ConcurrentHashMap1.8() 介绍?
在concurrentHashMap中,有个很重要的变量sizeCtl来控制扩容的大小, 以及是否在进行扩容.
concurrentHashMap中, 还有Node,继承hashEntry, 有TreeNode, TreeBin()(用于封装TreeNode()).
在1.8中, 扩容是并发扩容, 带有并发度(同时扩容ConcurrentHashMap且不产生锁竞争的最大扩容数),可以在initialize()中设置,并且当初始容量小于并发度的时候, 将初始容量扩展至并发度大小.
网友评论