摘要: 1 前言 这节我们从AtomicInteger这个比较简单的原子类开始,来看看AtomicInteger的底层原理。 2 实测样例对比线程安全性 在说AtomicInteger的底层原理之前呢,我们先来看个例子感受下原子类: static修饰的共享变量,我们开启两个线程对共享变量进行10000次+1 阅读全文
posted @ 2023-04-03 23:13 酷酷- 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 1 前言 这节我们就开始看看Atomic原子类系列,JUC包下提供的原子类底层的实现原理基本都是差不多的,都是基于volatile和CAS操作来保证线程安全的,我们后续会着重分析几个类。 2 概览 我们看下JUC下边都有哪些原子类: 看上面的图形,我们使用红色圈中的那些,就是我们要着重讨论的,一共分 阅读全文
posted @ 2023-04-03 22:14 酷酷- 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 1 前言 这节我们来看看JDK底层的unsafe,因为很多的操作都是依赖于unsafe提供的功能的。 2 unsafe是什么? unsafe是JDK提供的一个工具类,里面的方法大多是native方法,unsafe类是JDK给你提供的一个直接调用操作系统底层功能的一个工具类,unsafe提供了非常多操 阅读全文
posted @ 2023-04-03 16:46 酷酷- 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 1 前言 这节我们来看看synchronized是怎么保证原子性、可见性、有序性。 2 原子性 通过前面的篇章我们知道 synchronized 底层实际上通过JVM来实现的,同一时间只能有一个线程去执行synchronized 中的代码块。 原子性:既然同一时间只有一个线程去运行里面的代码,那么这 阅读全文
posted @ 2023-04-03 07:53 酷酷- 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 1 前言 这节我们来看看synchronized的锁重入、锁优化、和锁升级的原理。 2 synchronized锁重入 所谓锁重入,就是支持正在持有锁的线程支持再次获取锁,不会出现自己锁死自己的问题。 比如以下的代码: synchronized(this) { synchronized(this){ 阅读全文
posted @ 2023-04-03 07:29 酷酷- 阅读(144) 评论(0) 推荐(0) 编辑