2、公平锁与非公平锁;3、锁的多个条件。我们知道synchronized只能实现非公平锁,因此在需要使用公平锁的情况下会使用ReentrantLock,非公平锁和公平锁的区别在于会不会在锁释放时,新的线程是否会和AQS队列中的队首...
ReentrantLock和synchronized的自JDK1.6以来主要的区别在于:1、等待可中断;2、公平锁与非公平锁;3、锁的多个条件。我们知道synchronized只能实现非公平锁,因此在需要使用公平锁的情况下会使用ReentrantLock,非公平锁和公平锁的区别在于会不会在锁释放时,新的线程是否会和AQS队列中的队首线程竞争锁。但是以上八股文的背法,为了更好的理解公平锁与非公平锁,笔者简单的模拟了公平锁和非公平锁的竞争的情况,详细的注释已经在代码里了。