AQS详解

前言

上个算法题说到了信号量,那么就通过信号量来详细的解读下AQS。
首先理解一下信号量的概念,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用,在进入一个关键代码段之前,线程必须获取一个信号量,一旦该代码段完成了,那么该线程必须释放信号量,其他想进入该关键代码段的线程必须等待直到第一个线程释放信号量。
所以我们可以了解到,信号量多是用来解决资源有限的问题。那我们就通过java中的Semaphore来看一下。

类图

semaphare 上图中,我们日常使用的是semaphore,其中封装了FairSync和NonfairSync,而这两个子类也是继承自sync,sync又继承自AQS,所以从上到下的逻辑。

日常使用

// 创建
new Semaphore(1);
>