18、StampedLock:有没有比读写锁更快的锁

在[上一篇文章]中,我们介绍了读写锁,学习完之后你应该已经知道“读写锁允许多个线程同时读共享变量,适用于读多写少的场景”。那在读多写少的场景中,还有没有更快的技术方案呢?还真有,Java在1.8这个版本里,提供了一种叫StampedLock的锁,它的...

Java并发编程实战

17、ReadWriteLock:如何快速实现一个完备的缓存

前面我们介绍了管程和信号量这两个同步原语在Java语言中的实现,理论上用这两个同步原语中任何一个都可以解决所有的并发问题。那Java SDK并发包里为什么还有很多其他的工具类呢?原因很简单:分场景优化性能,提升易用性。 今天我们就介绍一种非常普遍的并...

Java并发编程实战

16、Semaphore:如何快速实现一个限流器

Semaphore,现在普遍翻译为“信号量”,以前也曾被翻译成“信号灯”,因为类似现实生活里的红绿灯,车辆能不能通行,要看是不是绿灯。同样,在编程世界里,线程能不能执行,也要看信号量是不是允许。 信号量是由大名鼎鼎的计算机科学家迪杰斯特拉(Dijks...

Java并发编程实战

15、Lock和Condition(下):Dubbo如何用管程实现异步转同步

在上一篇文章中,我们讲到Java SDK并发包里的Lock有别于synchronized隐式锁的三个特性:能够响应中断、支持超时和非阻塞地获取锁。那今天我们接着再来详细聊聊Java SDK并发包里的Condition,Condition实现了管程模型...

Java并发编程实战

14、Lock和Condition(上):隐藏在并发包中的管程

Java SDK并发包内容很丰富,包罗万象,但是我觉得最核心的还是其对管程的实现。因为理论上利用管程,你几乎可以实现并发包里所有的工具类。在前面[《08 | 管程:并发编程的万能钥匙》]中我们提到过在并发编程领域,有两大核心问题:一个是互斥,即同一时...

Java并发编程实战

13、理论基础模块热点问题答疑

到这里,专栏的第一模块——并发编程的理论基础,我们已经讲解完了,总共12篇,不算少,但“跳出来,看全景”你会发现这12篇的内容基本上是一个“串行的故事”。所以,在学习过程中,建议你从一个个单一的知识和技术中“跳出来”,看全局,搭建自己的并发编程知识体...

Java并发编程实战