![](https://img-blog.csdnimg.cn/20200525165947998.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
并发编程
文章平均质量分 95
Java中不可说的“锁”事,AQS,线程池等!
木子雷
正在努力进阶中的渣渣!
展开
-
根据AQS原理使用CAS + volatile实现同步代码块
前言: 最近看到有人说可以使用 CAS + volatile 实现同步代码块。 心想,确实是可以实现的呀!因为 AbstractQueuedSynchronizer(简称 AQS)内部就是通过 CAS + volatile(修饰同步标志位state) 实现的同步代码块。 并且ReentrantLock就是基于AQS原理来实现同步代码块的;ReentrantLock源码学习和了解AQS原理可以参考:带你探索ReentrantLock源码的快乐 今天,咱们就通过 CAS + volatile 实现一个 .原创 2021-01-19 18:51:26 · 436 阅读 · 1 评论 -
一文让你彻底明白ThreadLocal
前言: ThreadLocal在JDK中是一个非常重要的工具类,通过阅读源码,可以在各大框架都能发现它的踪影。它最经典的应用就是 事务管理 ,同时它也是面试中的常客。 今天就来聊聊这个ThreadLocal;本文主线: ①、ThreadLocal 介绍 ②、ThreadLocal 实现原理 ③、ThreadLocal 内存泄漏分析 ④、ThreadLocal 应用场景及示例 注:本文源码基于 JDK1.8 ThreadLocal 介绍: 正如 JDK 注释中所说的那样: ThreadLocal .转载 2020-12-02 19:23:23 · 4830 阅读 · 6 评论 -
AQS之CountDownLatch源码解析
前言: CountDownLatch(倒计数器)是JDK并发包下的一个同步工具类,其内部是依赖于AQS(AbstractQueuedSynchronizer)的 共享锁(共享模式)。 应用场景: 针对于 CountDownLatch 倒计时器, 一种典型的场景就是类似于火箭发射;在火箭发射前,为了保证万无一失,往往还要进行各项设备、仪器的检测,只有等到所有的检查完毕且没问题后,引擎才能点火。那么在检测环节中多个检测项可以同时并发进行的,只有所有检测项全部完成后,才会通知引擎点火的,这里可以使用 Cou原创 2020-05-31 19:24:08 · 397 阅读 · 0 评论 -
AQS之ReentrantLock源码解析
前言: Java中的同步类ReentrantLock是基于AbstractQueuedSynchronizer(简称为AQS)实现的。 今天从源码来了解下ReentrantLock中非公平锁的加锁和释放锁(ReentrantLock中支持公平锁和非公平锁,默认是非公平锁的,但可以通过创建ReentrantLock对象时传入参数指定使用公平锁)。 在了解ReentrantLock前,需要对AQS有一定的了解,否则在学习时会比较困难的,并且在通过源码学习ReentrantLock时也会穿插着讲解AQS内容。原创 2020-05-24 19:32:51 · 870 阅读 · 0 评论