
并发编程
zhangzhen02
这个作者很懒,什么都没留下…
展开
-
AQS之CyclicBarrier源码解析
CyclicBarrier同步器经常被问到,跟CountDownLatch有什么区别。区别还是很大的。我们从源码看一下:继承关系及属性public class CyclicBarrier { private static class Generation { boolean broken = false; } private final ReentrantLock lock = new ReentrantLock(); /** Condition to原创 2020-06-08 15:34:29 · 259 阅读 · 0 评论 -
AQS之Semaphore源码解析
看几个主要方法abstract static class Sync extends AbstractQueuedSynchronizer { private static final long serialVersionUID = 1192457210091910933L; Sync(int permits) { setState(permits); } final int getPermits() {原创 2020-06-04 21:08:52 · 165 阅读 · 0 评论 -
AQS之countDownLatch源码解析
首先看内部结构public class CountDownLatch { /** * Synchronization control For CountDownLatch. * Uses AQS state to represent count. */ private static final class Sync extends AbstractQueuedSynchronizer { private static final long se原创 2020-06-04 20:24:29 · 354 阅读 · 0 评论 -
浅显易懂的AQS源码分析,并实现自定义锁
AQS是什么?AQS(AbstractQueuedSynchronizer)是Java中重要的同步框架。该框架实现了大部分的同步器功能,使使用者仅覆盖几个简单的方法就可以得到各种各样的同步器,包括ReentrantLock,Semaphore,CountDownLatch,ReentrantReadWriteLock,ThreadPoolExecutor等,当然也可以很简单的实现我们自己定义的同步器。从ReentrantLock说起。当我们使用一个ReentrantLock时Lock lock=ne原创 2020-06-04 14:49:11 · 207 阅读 · 0 评论 -
Atomic类怎么保证原子性的?有什么问题?
Atomic类是通过Unsafe类,实现的原子性。而Unsafe类是由native方法实现的。看下源码:public class AtomicInteger extends Number implements java.io.Serializable { public final int getAndIncrement() { return unsafe.getAndAddInt(this, valueOffset, 1); }}Unsafe类public final原创 2020-06-02 16:45:33 · 1385 阅读 · 0 评论