从 Java 锁到分布式锁
从 Java 锁到分布式锁
|
java |
0 评论
在并发编程中常用到 synchronized 以及 ReentrantLock 锁,在业务开发过程中也可能会用到分布式锁,分布式锁常用框架的就是基于 Redis 实现的分布式锁框架 Redisson 和 基于 Zookeeper 实现的分布式锁框架 Curator。当然,也有其他的锁实现方式,在这里不做介绍。
【JDK源码笔记】- 写时复制集合 —— CopyOnWriteArrayList
【JDK源码笔记】- 写时复制集合 —— CopyOnWriteArrayList
|
JUC 下面还有一个系列的类,都是 CopyOnWriteXXX ,意思是写时复制,这个究竟是怎么回事?那就以 CopyOnWriteArrayList 为切入点,一起了解写时复制是怎么回事?
【JDK源码笔记】- 非阻塞的无界线程安全队列 —— ConcurrentLinkedQueue
【JDK源码笔记】- 非阻塞的无界线程安全队列 —— ConcurrentLinkedQueue
|
JUC 下面的相关源码继续往下阅读,这就看到了非阻塞的无界线程安全队列 —— ConcurrentLinkedQueue,来一起看看吧。
【JDK源码笔记】- 基于链表的有界阻塞队列 —— LinkedBlockingQueue
【JDK源码笔记】- 基于链表的有界阻塞队列 —— LinkedBlockingQueue
|
上一节看了基于数据的有界阻塞队列 ArrayBlockingQueue 的源码,通过阅读源码了解到在 ArrayBlockingQueue 中入队列和出队列操作都是用了 ReentrantLock 来保证线程安全。下面咱们看另一种有界阻塞队列:LinkedBlockingQueue。
【JDK源码笔记】- AQS 都看完了,Condition 原理可不能少!
【JDK源码笔记】- AQS 都看完了,Condition 原理可不能少!
|
在介绍 AQS 时,其中有一个内部类叫做 ConditionObject,当时并没有进行介绍,并且在后续阅读源码时,会发现很多地方用到了 Condition ,这时就会很诧异,这个 Condition 到底有什么作用?那今天就通过阅读 Condition 源码,从而弄清楚 Condition 到底是做什么的?
【JDK源码笔记】- 基于数组的有界阻塞队列 —— ArrayBlockingQueue
【JDK源码笔记】- 基于数组的有界阻塞队列 —— ArrayBlockingQueue
|
在阅读完和 AQS 相关的锁以及同步辅助器之后,来一起阅读 JUC 下的和队列相关的源码。先从第一个开始:ArrayBlockingQueue。
【JDK源码笔记】- 使用递增计数器的线程同步工具 —— 信号量,它的原理是什么样子的?
【JDK源码笔记】- 使用递增计数器的线程同步工具 —— 信号量,它的原理是什么样子的?
|
在 JUC 中线程同步器除了 CountDownLatch 和 CycleBarrier ,还有一个叫做 Semaphore (信号量),同样是基于 AQS 实现的。下面来看看信号量的内部原理。
【JDK源码笔记】- CyclicBarrier 不就是比 CountDownLatch 多了个回环么?
【JDK源码笔记】- CyclicBarrier 不就是比 CountDownLatch 多了个回环么?
|
看完 CountDownLatch 正准备表示一番,突然看到了一个 CyclicBarrier —— 回环屏障。沃特?回环还屏障?说比 CountDownLatch 要多一个回环,那咱可得瞧一瞧,看一看了!
【JDK源码笔记】- 快来看看!AQS 和  CountDownLatch 有怎么样的关系?
【JDK源码笔记】- 快来看看!AQS 和 CountDownLatch 有怎么样的关系?
|
CountDownLatch 一个同步辅助工具,同样是基于 AQS 实现,本篇文件主要是介绍 CountDownLatch 的使用,以及源码。
【JDK源码笔记】- 除了读写锁,JUC 下面还有个 StampedLock!还不过来了解一下么?
【JDK源码笔记】- 除了读写锁,JUC 下面还有个 StampedLock!还不过来了解一下么?
|
为什么有了 ReentrantLock 和 ReentrantReadWriteLock 之后还要设计一个 StampedLock ?