摘要: LongAdder 源码如下 cell的代码 其中Contended注解主要是为了解决不同缓存行数据失效的问题 由于cpu的速度和内存的速度差距太大,在cpu从内存读取数据到寄存器之间有三级缓存(l1,l2,l3),可以提升读取效率(详细可见操作系统)假设cpu1(核心1),cpu2(核心2)同时从 阅读全文
posted @ 2022-03-17 15:05 原来是晴天啊 阅读(47) 评论(0) 推荐(0) 编辑
摘要: volatile主要用途 1、保证可见性 对volatile变量的写指令后会加入写屏障 写屏障:在屏障之前的对共享变量的改动都同步到主存 对volatile变量的读指令前会加入读屏障 读屏障:在该屏障之后对共享变量的读取加载的都是主存中的新数据 2、保证有序性 写屏障保证指令重排序时,不会讲写屏障之 阅读全文
posted @ 2022-03-17 15:05 原来是晴天啊 阅读(79) 评论(0) 推荐(0) 编辑
摘要: java对象头结构 Mark Word 数据结构 synchronized 锁升级流程 偏向锁-->轻量级锁-->重量级锁 样例代码: public void test() { synchronized (object) { // 省略 } } 偏向锁过程 当Thread-A 进入 synchron 阅读全文
posted @ 2022-03-15 21:49 原来是晴天啊 阅读(85) 评论(0) 推荐(0) 编辑