在使用原子操作进行计数时,我们经常会用到ConcurrentHashMap,虽然ConcurrentHashMap是线程安全的,但是如果你操作的是其本身,并如果使用不当,也会造成很多线程安全问题。 看下面的例子,你觉得会输出多少呢? public class ConcurrentHashMapTest {private static final ConcurrentMap<String, At
jdk:1.7 segment数组+hashEntry数组+链表实现 jdk版本:1.8:hashEntry+数组+红黑树实现 1、基本参数 //**1、最大容量** hashmap的最大容量也是这个,菜鸟一面被问到了private static final int MAXIMUM_CAPACITY = 1 << 30;//数组默认为16private static final int
首先我们这样假设,假设哈希映射的内部数组的大小只有1,所有的元素都将映射该位置(0),从而构成一条较长的链表。由于我们更新、访问都要对这条链表进行线性搜索,这样势必会降低效率。我们假设,如果存在一个非常大数组,每个位置链表处都只有一个元素,在进行访问时计算其 index 值就会获得该对象,这样做虽然会提高我们搜索的效率,但是它浪费了空间。诚然,虽然这两种方式都是极端的,但是它给我们提