Fork me on GitHub
摘要: 概述 由于ConcurrentHashMap是一个高并发的集合,集合中增删就比较频繁,那计数就变成了一个问题,如果使用像AtomicInteger这样类型的变量来计数,虽然可以保证原子性,但是太多线程去竞争CAS,自旋也挺浪费时间的,所以ConcurrentHashMap使用了一种类似LongAdd 阅读全文
posted @ 2020-09-11 19:11 猿起缘灭 阅读(1731) 评论(1) 推荐(0) 编辑
摘要: 概述 在上一篇文章中介绍了ConcurrentHashMap的存储结构,以及put和get方法,那本篇文章就介绍一下其扩容原理。其实说到扩容,无非就是新建一个数组,然后把旧的数组中的数据拷贝到新的数组中,在HashMap的实现中,由于没有加锁,可能会同时有多个线程创建了多个数组,而且拷贝的时候也没有 阅读全文
posted @ 2020-09-11 16:10 猿起缘灭 阅读(1667) 评论(1) 推荐(2) 编辑
摘要: 概述 ConcurrentHashMap,一个线程安全的高性能集合,存储结构和HashMap一样,都是采用数组进行分桶,之后再每个桶中挂一个链表,当链表长度大于8的时候转为红黑树,其实现线程安全的基本原理是采用CAS + synchronized组合,当数组的桶中没有元素时采用CAS插入,相反,则采 阅读全文
posted @ 2020-09-11 11:57 猿起缘灭 阅读(484) 评论(0) 推荐(0) 编辑