java
herogj
这个作者很懒,什么都没留下…
展开
-
ConcurrentHashMap 存储以及扩容的实现原理
总结 众所周知 ConcurrentHashMap 是线程安全的,但是在实现上,它摒弃了1.7分段锁的机制,而是采用了CAS+自旋的无锁编程的方式实现的,在设计上,扩容的时候 利用多线程的并发能力,采用多线程协助扩容的方式实现的,在容器的数量的统计上,为了避免线程安全问题和高并发下过多的自旋,没有采用单一的size变量进行统计,而是采用了baseCount+CountCell[],进行分段统计,其中CountCell 采用@CountCell 标注避免了伪共享的问题出现,全程加锁的只有两个地方 1.put操原创 2021-07-26 19:03:49 · 709 阅读 · 0 评论 -
spring bean 生命周期
Spring bean 生命周期 整个springbean的生命周期 从大的范围来分 分为资源的定位,解析,装载,加载,卸载.定位即为bean的表现形式:1,xml,2.注解,3,文件系统,解析的过程就是把这些表现形式的bean转化为spring统一表现形式的bean(BeanDefintion),装载到容器中(ConcurrentHashMap),然后由spring容器,按照标准的逻辑加载,最后卸载.整个的加载过程如下: spring bean 加载过程 加载过程总结: 三级缓存获取(解决循环依赖),实原创 2021-01-27 11:15:03 · 89 阅读 · 0 评论