【阻塞队列】-- CyclicBarrier源码解析(jdk1.8)

概述

CyclicBarrierCountDownLatch类似,它们都是阻塞一组线程直到某个事件的发生。CyclicBarrierCountDownLatch的关键区别在于,CyclicBarrier中的所有的线程必须同时达到屏蔽点才能继续执行,如果其中一个线程被中断,那么所有的等待的线程都会立刻被唤醒,并且抛出异常。而CountDownLatch中线程之间不会收到干扰。CyclicBarrier可以复用,每次打破屏障后,都会生成一个新的屏障,供下次使用,而CountDownLatch用一次之后就无效了。

【阻塞队列】-- Semaphore源码解析(jdk1.8)

概述

​ 上一篇我们解析了CountDownLatchSemaphoreCyclicBarrierCountDownLatch一样,都是基于AQS实现的同步工具类。Semaphore用来控制线程的并发,初始时会指定一个许可数permits,线程执行前需要获取许可,获取到许可后许可数-1,线程会向下执行,如果没有可用许可,就会被阻塞。直到其他线程执行完成释放许可后,被阻塞线程才会继续尝试获取许可。

CountDownLatch源码解析(jdk1.8)

概述

CountDownLatch是基于AQS实现的一个同步工具类。它允许一个线程一直等待,直到其他线程执行完成后再执行。CountDownLatch源码比较简单,基于AQS实现共享锁的等待 ,初始化时只需要设置一个初始值,后续针对锁的状态进行控制,最后根据锁的状态来释放等待线程即可。CountDownLatchCyclicBarrier不同,8.19是不可复用的,CountDownLatch释放等待线程后,就不能再次使用了。看此源码之前,建议先看AQS源码解析

ReentrantReadWriteLock源码解析(jdk1.8)

概述

ReentrantReadWriteLock基于AQS实现的读写锁,写锁和读锁分别使用排他锁、共享锁实现。

ReentrantLock源码解析(jdk1.8)

概述

ReentrantLock是一个基于AQS(AQS源码解析)实现的可重入的独占锁,提供了公平锁与非公平锁的获取。与synchronized关键词实现的独占锁不同,ReentrantLock锁的粒度更细、功能更加丰富、使用也更灵活。不过ReentrantLock需要手动控制锁的释放。

ConditionObject源码解析(jdk1.8)

概述

ConditionObjectAQS的内部类,是一个单向队列,提供了条件锁的同步实现。

AbstractQueuedSynchronizer源码解析(jdk1.8)

概述

AQS(AbstractQueuedSynchronizer)CLH锁为基础而设计,是并发编程中一个重要的框架类,用于构建锁和其他的同步组件。

ConcurrentHashMap源码解析(jdk1.8)

概述

ConcurrentHashMapHashMap线程安全的版本。jdk1.8以前ConcurrentHashMap采用Segment分段锁技术,Segment继承自ReentrantLock,通过对Segment加锁实现并发操作。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×