JUC并发编程
雕爷的架构之路
前美团外卖系统核心参与者,创过业,干过老板,码过代码,撸过一点儿运维,现在是独立开发者,专注分享Java技术栈,偶尔也讲讲互联网面试那点事儿
展开
-
AQS源码深入分析之条件队列-你知道Java中的阻塞队列是如何实现的吗?
本文基于JDK-8u261源码分析 1 简介 因为CLH队列中的线程,什么线程获取到锁,什么线程进入队列排队,什么线程释放锁,这些都是不受我们控制的。所以条件队列的出现为我们提供了主动式地、只有满足指定的条件后才能线程阻塞和唤醒的方式。对于条件队列首先需要说明一些概念:条件队列是AQS中除了CLH队列之外的另一种队列,每创建一个Condition实际上就是创建了一个条件队列,而每调用一次await方法实际上就是往条件队列中入队,每调用一次signal方法实际上就是往条件队列中出队。不像CLH队列上节点原创 2020-11-09 17:05:09 · 120 阅读 · 0 评论 -
AQS源码深入分析之独占模式-ReentrantLock锁特性详解
本文基于JDK-8u261源码分析 相信大部分人知道AQS是因为ReentrantLock,ReentrantLock的底层是使用AQS来实现的。还有一部分人知道共享锁(Semaphore/CountDownLatch/CyclicBarrier)也是由AQS来实现的。也就是说AQS中有独占和共享两种模式。但你以为这就是AQS的全部了吗?其实不然。AQS中还有第三种模式:条件队列。像Java中的阻塞队列(ArrayBlockingQueue、LinkedBlockingQueue等)就是由AQS中的条件队原创 2020-11-02 21:46:24 · 300 阅读 · 0 评论