![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发基础
文章平均质量分 87
北京一夜℃
这个作者很懒,什么都没留下…
展开
-
ReentrantLock可重入锁源码剖析
有了AQS的基础后(AQS(AbstractQueuedSynchronizer)源码初识),可以进一步分析基于AQS独占模式实现的Reentrantlock。首先来看看成员变量成员变量public class ReentrantLock implements Lock, java.io.Serializable { private static final long serialVersionUID = 7373984872572414699L; /** 提供所有实现机制..原创 2021-07-21 10:12:24 · 166 阅读 · 0 评论 -
AQS(AbstractQueuedSynchronizer)源码初识
前几天在对比Synchronized和ReentrantLock的关系和区别时,以及学习使用Semaphore、CountDownLatch和CyclicBarrier时,发现里面底层都有这样一个同步器。这让我觉得学习它们的底层原理,就不得不学习AQS自身的底层原理,那么,我们就来吧。这里参考了队列同步器(AQS)详解和这才是图文并茂:我写了1万多字,就是为了让你了解AQS是怎么运行的目录成员变量Node独占式同步组件的设计同步器提供的模板方法供子类重写的...原创 2021-07-18 16:14:37 · 312 阅读 · 0 评论 -
Java线程的基础同步策略介绍
关于线程中的同步策略,或者说是线程之间的协作,如何去进行? 关于这个问题,我们自然想到Java中线程之间能够共享的在堆区和方法区,应该从这里入手比较好。而具体工具我们能想到啥呢?利用 锁、信号量、条件变量,CAS?具体如何做呢?我们这里从一个常见的问题来入手解决,进而了解在Java中线程的常见同步策略有哪些。目录问题描述问题思考问题解决问题描述 使用两个线程交替打印出0-99的数字。问题思考 两个线程交替打印0-9...原创 2021-07-16 15:23:48 · 123 阅读 · 0 评论