jdk8 ConcurrentHashMap分析
ConcurrentHashMap分析 tryPresize() transfer() putVal() addCount() sumCount() class ConcurrentHashMap { /** * Tries to presize table to accommodate the given number of elements. * * @param size number of elements (doesn't need to be perfectly accurate) */ private final void tryPresize(int size) { // 当size未达到MAXIMUM_CAPACITY时,扩容size。调用tableSizeFor(), // 此处size + (size >>> 1) + 1 == size*1.5+1,注意, size = table.length << 1 // 传进来的size已经提前扩容了2倍 // c == 2**n int c = (size >= (MAXIMUM_CAPACITY >>> 1)) ? MAXIMUM_CAPACITY : tableSizeFor(size + (size >>> 1) + 1); int sc; // 判断条件,sizeCtl >=0 说明