ReentrantLock与synchronized不同之处是加锁是用reentrantLock.lock(),解锁用的是reentrantLock.unlock(),实现原理是cas加上队列来实现。可以实现公平锁和非公平锁,实现公平锁其实用的就是队列,先进先出,非公平锁就没有用到队列,只用到cas保持多线程时候只有一个线程可以获得锁。用到state,每次重入的时候,用volatile修饰的state就会加一,保证重如的时候不用重复竞争锁。
ReentrantLock源码分析
最新推荐文章于 2022-02-22 04:48:40 发布