线程间的同步与通信(6)——CountDownLatch源码分析

2018-09-25
阅读 8 分钟
7.2k
CountDownLatch是一个很有用的工具,latch是门闩的意思,该工具是为了解决某些操作只能在一组操作全部执行完成后才能执行的情景。例如,小组早上开会,只有等所有人到齐了才能开;再如,游乐园里的过山车,一次可以坐10个人,为了节约成本,通常是等够10个人了才开。CountDown是倒数计数,所以CountDownLatch的用法通常...

线程间的同步与通信(5)——ReentrantLock源码分析

2018-09-24
阅读 13 分钟
5.5k
上一篇 我们学习了lock接口,本篇我们就以ReentrantLock为例,学习一下Lock锁的基本的实现。我们先来看看Lock接口中的方法与ReentrantLock对其实现的对照表:

线程间的同步与通信(4)——Lock 和 Condtion

2018-09-19
阅读 6 分钟
6.7k
前面几篇我们学习了synchronized同步代码块,了解了java的内置锁,并学习了监视器锁的wait/notify机制。在大多数情况下,内置锁都能很好的工作,但它在功能上存在一些局限性,例如无法实现非阻塞结构的加锁规则等。为了拓展同步代码块中的监视器锁,java 1.5 开始,出现了lock接口,它实现了可定时、可轮询与可中断的锁...

逐行分析AQS源码(3)——共享锁的获取与释放

2018-09-18
阅读 11 分钟
17.5k
前面两篇我们以ReentrantLock为例了解了AQS独占锁的获取与释放,本篇我们来看看共享锁。由于AQS对于共享锁与独占锁的实现框架比较类似,因此如果你搞定了前面的独占锁模式,则共享锁也就很容易弄懂了。