Fork me on GitHub
摘要: 本文承接上一篇:AQS-共享模式分析 概述 信号量Semaphore是一个控制访问多个共享资源的计数器,和CountDownLatch一样,本质上是一种共享锁。举个例子,还是生产者消费者的例子,假设缓冲区的大小是100,然后可以实现多个生产者和消费者同时进行工作,只要100个资源没有使用完,生产者就 阅读全文
posted @ 2020-09-04 23:08 猿起缘灭 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 本文承接上一篇文章:AQS-独占模式分析 概述 一般我们在使用锁的时候,是要求两个线程之间严格互斥的,即一次只能一个线程获取到锁,但是在有些场景下是可以一次有多个线程获取到锁,当然这个时候不叫锁,换了一种说法,叫做资源。比如生产者消费者模型,实际上我们是可以让多个生产者和消费者同时工作的,如果使用互 阅读全文
posted @ 2020-09-04 21:40 猿起缘灭 阅读(754) 评论(0) 推荐(0) 编辑
摘要: 概述 ReentrantLock是基于AQS独占模式实现的一种可重入锁,与synchronized不同的是,ReentrantLock提供了公平锁和非公平锁的选择。其本质是基于操作系统的管程实现的。本文就分析一下ReentrantLock的实现原理,由于AQS在AQS-独占模式分析已经介绍过,所以涉 阅读全文
posted @ 2020-09-04 18:16 猿起缘灭 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 概述 Condition的作用用一句话概括就是为了实现线程的等待(await)和唤醒(signal),多线程情况下为什么需要等待唤醒机制?原因是有些线程执行到某个阶段需要等待符合某个条件才可以继续执行,在之前学习操作系统的时候,有一个经典的场景就是在容量有限的缓冲区实现生产者消费者模型,如果缓冲区满 阅读全文
posted @ 2020-09-04 16:12 猿起缘灭 阅读(3308) 评论(0) 推荐(2) 编辑