学习笔记:
- HashMap多线程环境下线程不安全主要原因是put(key,value)操作会引起死循环,hashMap中的 Entry 链表产生环形数据结构,next往下找的时候,永远找不到最后一个,所以导致死循环。
- ConcurrentHashMap中如何定位某个元素在哪个位置,如何保证线程安全?
JDK1.7及以前:
get()方法定位segment:key的hashcode 进行再散列值的高位 取模
定位table:key的hashcode进行再散列值 取模
依次扫描链表,要么找到元素,或者返回null