- 博客(3)
- 收藏
- 关注
原创 JDK1.8 ConcurrentHashMap的put函数流程
判断数组是否为空第一次插入时初始化数组table(为volatile修饰),其大小默认为16。插入元素时先获得键的hash值,然后找到数组索引插入,插入时先看数组是否为空。为空:初始化table:先看sizeCtl是否为小于0,为-1则其他线程占有锁。不为则初始化其为-1,然后默认数组大小为16。sizeCtl为16*0.75。然后判断数组第一个位置是否为空,为空,采用casTab()插入。不为空,判断其hash是否为-1。为-1,判断是否在扩容,不是扩容直接返回table。不为空:加锁:
2020-06-10 09:35:39
1955
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅