并发安全
文章平均质量分 57
herogj
这个作者很懒,什么都没留下…
展开
-
ConcurrentHashMap 存储以及扩容的实现原理
总结 众所周知 ConcurrentHashMap 是线程安全的,但是在实现上,它摒弃了1.7分段锁的机制,而是采用了CAS+自旋的无锁编程的方式实现的,在设计上,扩容的时候 利用多线程的并发能力,采用多线程协助扩容的方式实现的,在容器的数量的统计上,为了避免线程安全问题和高并发下过多的自旋,没有采用单一的size变量进行统计,而是采用了baseCount+CountCell[],进行分段统计,其中CountCell 采用@CountCell 标注避免了伪共享的问题出现,全程加锁的只有两个地方 1.put操原创 2021-07-26 19:03:49 · 693 阅读 · 0 评论 -
java 锁
java 锁的实现原理 java里面的锁,是由三个要素组成,分别是: 资源,线程,容器,整个的实现过程,概括起来很简单,过程如下: 线程开始尝试获取资源,这里的资源 一般指java类里面的成员变量,一般称其为许可证,这里的获取资源的过程,是所有的线程,并发获取,通过cas的方式实现最终只有一个线程获取资源成功.获取资源成功线程,记录当前拥有该资源的线程(基于锁的可重入性,进行设计),没有获取成功的线程加入等待容器(一般特指数组,链表,队列等存放资源的容器),并阻塞等待.成功获取资源的线程,执行完业务逻辑原创 2021-01-17 18:41:35 · 114 阅读 · 0 评论