多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### AQS > AQS的全称为(AbstractQueuedSynchronizer) **acquire()的流程 (独占锁):** * 调用自定义同步器的tryAcquire()尝试直接去获取资源,如果成功则直接返回; * 没成功,则addWaiter()将该线程加入等待队列的尾部,并标记为独占模式; * acquireQueued()使线程在等待队列中休息,有机会时(轮到自己,会被unpark())会去尝试获取资源。获取到资源后才返回。如果在整个等待过程中被中断过,则返回true,否则返回false。 * 如果线程在等待过程中被中断过,它是不响应的。只是获取资源后才再进行自我中断selfInterrupt(),将中断补上。 **release():** release()是独占模式下线程释放共享资源的顶层入口。它会释放指定量的资源,如果彻底释放了(即state=0),它会唤醒等待队列里的其他线程来获取资源。