上一页 1 ··· 38 39 40 41 42 43 44 45 46 ··· 52 下一页
摘要: 1 前言 上一节我们对LongAdder的底层源码、实现机制进行了深入了剖析,包括AtomicInteger在高并发竞争下导致的大量自旋的问题,以及LongAdder是怎么使用分段锁优化这个问题的。我们最后看到longAccumulate托底的方法,这一节我们来深入的分析一下Striped64的分段 阅读全文
posted @ 2023-04-04 15:07 酷酷- 阅读(209) 评论(0) 推荐(0)
摘要: 1 前言 上一节我们讲解了cas的缺陷,无法同时更新多个变量、以及ABA的问题。以及如果使用AtomicReference解决同时更新多个变量,如果使用AtomicStampedReference解决ABA的问题,这节我们就来讲解CAS带来的另外一个问题,在并发激烈的时候,产生大量的自旋,空耗CPU 阅读全文
posted @ 2023-04-04 08:11 酷酷- 阅读(336) 评论(0) 推荐(2)
摘要: 1 前言 上节我们看了AtomicInteger、AtomicBoolean的原理,这一篇我们就来说说Atomic系列的另一个分类AtomicReference和AtomicStampReference。 2 多个变量修改的原子性 JUC虽然提供了AtomicInteger、AtomicBoolea 阅读全文
posted @ 2023-04-04 06:56 酷酷- 阅读(395) 评论(0) 推荐(0)
摘要: 1 前言 这节我们从AtomicInteger这个比较简单的原子类开始,来看看AtomicInteger的底层原理。 2 实测样例对比线程安全性 在说AtomicInteger的底层原理之前呢,我们先来看个例子感受下原子类: static修饰的共享变量,我们开启两个线程对共享变量进行10000次+1 阅读全文
posted @ 2023-04-03 23:13 酷酷- 阅读(326) 评论(0) 推荐(0)
摘要: 1 前言 这节我们就开始看看Atomic原子类系列,JUC包下提供的原子类底层的实现原理基本都是差不多的,都是基于volatile和CAS操作来保证线程安全的,我们后续会着重分析几个类。 2 概览 我们看下JUC下边都有哪些原子类: 看上面的图形,我们使用红色圈中的那些,就是我们要着重讨论的,一共分 阅读全文
posted @ 2023-04-03 22:14 酷酷- 阅读(147) 评论(0) 推荐(0)
摘要: 1 前言 这节我们来看看JDK底层的unsafe,因为很多的操作都是依赖于unsafe提供的功能的。 2 unsafe是什么? unsafe是JDK提供的一个工具类,里面的方法大多是native方法,unsafe类是JDK给你提供的一个直接调用操作系统底层功能的一个工具类,unsafe提供了非常多操 阅读全文
posted @ 2023-04-03 16:46 酷酷- 阅读(573) 评论(0) 推荐(0)
摘要: 1 前言 这节我们来看看synchronized是怎么保证原子性、可见性、有序性。 2 原子性 通过前面的篇章我们知道 synchronized 底层实际上通过JVM来实现的,同一时间只能有一个线程去执行synchronized 中的代码块。 原子性:既然同一时间只有一个线程去运行里面的代码,那么这 阅读全文
posted @ 2023-04-03 07:53 酷酷- 阅读(241) 评论(0) 推荐(0)
摘要: 1 前言 这节我们来看看synchronized的锁重入、锁优化、和锁升级的原理。 2 synchronized锁重入 所谓锁重入,就是支持正在持有锁的线程支持再次获取锁,不会出现自己锁死自己的问题。 比如以下的代码: synchronized(this) { synchronized(this){ 阅读全文
posted @ 2023-04-03 07:29 酷酷- 阅读(238) 评论(0) 推荐(0)
摘要: 1 前言 之前我们说过对象头的信息,这节我们就来看看synchronized是怎么通过monitor进行重量级加锁。 2 内容回顾 我们先来回顾下Mark Word的内容: 当Mark Word的最后两位的锁标志位是10的时候,Mark Word这哥们说自己处于重量级锁的模式,重量级加锁不是它的责任 阅读全文
posted @ 2023-04-02 21:57 酷酷- 阅读(333) 评论(0) 推荐(0)
摘要: 1 前言 这节我们就来看看volatile怎么通过内存屏障保证可见性和有序性。 2 保证可见性 volatile修饰的变量,在每个读操作(load操作)之前都加上Load屏障,强制从主内存读取最新的数据。每次在assign赋值后面,加上Store屏障,强制将数据刷新到主内存。 以volatile i 阅读全文
posted @ 2023-04-02 15:43 酷酷- 阅读(387) 评论(0) 推荐(0)
上一页 1 ··· 38 39 40 41 42 43 44 45 46 ··· 52 下一页