写时复制集合 —— CopyOnWriteArrayList

2020-11-08
阅读 5 分钟
2k
前言JUC 下面还有一个系列的类,都是 CopyOnWriteXXX ,意思是写时复制,这个究竟是怎么回事?那就以 CopyOnWriteArrayList 为切入点,一起了解写时复制是怎么回事?

非阻塞的无界线程安全队列 —— ConcurrentLinkedQueue

2020-11-08
阅读 5 分钟
3.8k
前言JUC 下面的相关源码继续往下阅读,这就看到了非阻塞的无界线程安全队列 —— ConcurrentLinkedQueue,来一起看看吧。

基于链表的有界阻塞队列 —— LinkedBlockingQueue

2020-11-08
阅读 6 分钟
2.6k
前言上一节看了基于数据的有界阻塞队列 ArrayBlockingQueue 的源码,通过阅读源码了解到在 ArrayBlockingQueue 中入队列和出队列操作都是用了 ReentrantLock 来保证线程安全。下面咱们看另一种有界阻塞队列:LinkedBlockingQueue。

AQS 都看完了,Condition 原理可不能少!

2020-11-08
阅读 10 分钟
2.9k
前言在介绍 AQS 时,其中有一个内部类叫做 ConditionObject,当时并没有进行介绍,并且在后续阅读源码时,会发现很多地方用到了 Condition ,这时就会很诧异,这个 Condition 到底有什么作用?那今天就通过阅读 Condition 源码,从而弄清楚 Condition 到底是做什么的?当然阅读这篇文章的时候希望你已经阅读了 AQS、Reen...

使用递增计数器的线程同步工具 —— 信号量,它的原理是什么样子的?

2020-11-08
阅读 6 分钟
982
前言在 JUC 中线程同步器除了 CountDownLatch 和 CycleBarrier ,还有一个叫做 Semaphore (信号量),同样是基于 AQS 实现的。下面来看看信号量的内部原理。

CountDownLatch 瞬间炸裂!同基于 AQS,凭什么 CyclicBarrier 可以这么秀?

2020-11-08
阅读 9 分钟
1.2k
前言看完 CountDownLatch 正准备表示一番,突然看到了一个 CyclicBarrier —— 回环屏障。沃特?回环还屏障?说比 CountDownLatch 要多一个回环,那咱可得瞧一瞧,看一看了!

快来看看!AQS 和 CountDownLatch 有怎么样的关系?

2020-11-08
阅读 5 分钟
1.2k
前言CountDownLatch 一个同步辅助工具,同样是基于 AQS 实现,本篇文件主要是介绍 CountDownLatch 的使用,以及源码。

除了读写锁,JUC 下面还有个 StampedLock!还不过来了解一下么?

2020-11-07
阅读 3 分钟
1.4k
前言在了解完 ReentrantLock 和 ReentrantReadWriteLock 之后,惊奇的发现 JUC 下还有一个 StampedLock 。 查阅资料发现是 JDK8 新增的一个锁。现在已经 JDK15 了,原谅我的孤陋寡闻,实在是业务开发中用的太少。那行吧,赶紧来看一下 StampedLock 到底是什么?为什么有了 ReentrantLock 和 ReentrantReadWriteLock 之后...

快进来!花几分钟看一下 ReentrantReadWriteLock 的原理!

2020-11-07
阅读 12 分钟
1.5k
前言在看完 ReentrantLock 之后,在高并发场景下 ReentrantLock 已经足够使用,但是因为 ReentrantLock 是独占锁,同时只有一个线程可以获取该锁,而很多应用场景都是读多写少,这时候使用 ReentrantLock 就不太合适了。读多写少的场景该如何使用?在 JUC 包下同样提供了读写锁 ReentrantReadWriteLock 来应对读多写少的...

不能再被问住了!ReentrantLock 源码、画图一起看一看!

2020-11-05
阅读 8 分钟
1.6k
前言在阅读完 JUC 包下的 AQS 源码之后,其中有很多疑问,最大的疑问就是 state 究竟是什么含义?并且 AQS 主要定义了队列的出入,但是获取资源、释放资源都是交给子类实现的,那子类是怎么实现的呢?下面开始了解 ReentrantLock。

别走!这里有个笔记:图文讲解 AQS ,一起看看 AQS 的源码……(图文较长)

2020-11-05
阅读 16 分钟
1.4k
前言AbstractQueuedSynchronizer 抽象队列同步器,简称 AQS 。是在 JUC 包下面一个非常重要的基础组件,JUC 包下面的并发锁 ReentrantLock CountDownLatch 等都是基于 AQS 实现的。所以想进一步研究锁的底层原理,非常有必要先了解 AQS 的原理。公众号:liuzhihangs,记录工作学习中的技术、开发及源码笔记;时不时分享...

JUC 包下工具类,它的名字叫 LockSupport !你造么?

2020-11-05
阅读 7 分钟
1.3k
前言LockSupport 是 JUC 中常用的一个工具类,主要作用是挂起和唤醒线程。在阅读 JUC 源码中经常看到,所以很有必要了解一下。公众号:liuzhihangs ,记录工作学习中的技术、开发及源码笔记;时不时分享一些生活中的见闻感悟。欢迎大佬来指导!

JDK 8 新增的 LongAdder,得过来看一下!

2020-11-05
阅读 8 分钟
1.8k
前言在介绍 AtomicInteger 时,已经说明在高并发下大量线程去竞争更新同一个原子变量时,因为只有一个线程能够更新成功,其他的线程在竞争失败后,只能一直循环,不断的进行 CAS 尝试,从而浪费了 CPU 资源。而在 JDK 8 中新增了 LongAdder 用来解决高并发下变量的原子操作。下面同样通过阅读源码来了解 LongAdder 。公...

请介绍下你了解的ThreadLocal,它的底层原理!

2020-11-05
阅读 12 分钟
2k
前言业务开发中经常使用 ThreadLocal 来存储用户信息等线程私有对象... ThreadLocal 内部构造是什么样子的?为什么可以线程私有?常说的内存泄露又是怎么回事?公众号:liuzhihangs ,记录工作学习中的技术、开发及源码笔记;时不时分享一些生活中的见闻感悟。欢迎大佬来指导!