2020年10月19日

关于HashMap的两个小知识点

摘要: 1 在put的时候,使用的并不是原始的hash值 而是高16位不变,低16位是 高十六位和低十六位异或 static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >> 阅读全文

posted @ 2020-10-19 17:46 MaXianZhe 阅读(103) 评论(0) 推荐(0) 编辑

ConcurrentHashMap红黑数的读写逻辑

摘要: 本文就ConcurrentHashMap红黑树的读写逻辑,尤其是jdk怎么控制读写同步的逻辑梳理下 本文要讨论的问题主要分两种 1 有线程在读,写进程怎么办? 2 有线程在写,读进程怎么办? TreeBin的hash值 -2哦 static final int TREEBIN = -2; // ha 阅读全文

posted @ 2020-10-19 16:03 MaXianZhe 阅读(213) 评论(0) 推荐(0) 编辑

ConcurrentHashMap中sizeCtl的说明

摘要: ConcurrentHashMap设计很强,其中sizeCtl设计十分巧妙。但是在网上查资料真的是以讹传讹啊。所以,我来写一下sizeCtl的说明。 sizeCtl有多重含义,其中除了扩容的时候难理解外,其他的比较好理解 · 1 如果一个ConcurrentHashMap正在初始化,值为-1 2 C 阅读全文

posted @ 2020-10-19 10:44 MaXianZhe 阅读(1343) 评论(0) 推荐(1) 编辑

导航