AQS分层及自定义锁

之前写了一些锁使用文章,比如ReentrantLock(独占锁),ReentrantReadWriteLock(读写锁)等,也写了一些线程通讯类Condition(条件队列),CountDownLatch(倒计时器),CyclicBarrier(循环栅栏),Semaphore(信号量)等,底层都是使用AQS实现的。本篇文章主要记录AQS内部变量方法的使用及作用,还使用AQS实现了自定义锁的实现。比较简单,如需编写复杂的自定义锁也可以参考ReentrantLock(独占锁),ReentrantReadWriteLock(读写锁)。

阅读更多

ReentrantReadWriteLock原理解析

前面在介绍ReentrantLock提到过SHARED锁和EXCLUSIVE锁,我们使用ReentrantLock的时候,虽然因为自旋效率较高,但有些情况下我们不必要使用独占锁,比如读写场景,读较多,写较少,可以让多个线程同时取读,当有线程写的时候让其余的读写线程等待即可。这样提高了读的效率。ReentrantReadWriteLock从名字来看就是读写锁,读读共享,读写互斥。

阅读更多