ReentrantLock和Synchronized的区别

  • 核心区别
  • 效率区别
  • 底层实现区别
  • 功能性的区别
/**
 * @author 舒一笑
 * @date 2023/5/28
 */
public class Test16 {
    ReentrantLock lock = new ReentrantLock(false);//非公平锁
    ReentrantLock lock2 = new ReentrantLock(true);//公平锁

    public static synchronized void main(String[] args) {

    }
}

什么是AQS

Java中ReentrantLock的概念深入理解-LMLPHP

AQS的特点

  • AQS中提供了一个由volatile修饰的,采用CAS方式修改的int类型的static变量。
    Java中ReentrantLock的概念深入理解-LMLPHP
  • AQS维护了一个由head、tail、并且每个节点都是Node对象的双向链表
    Java中ReentrantLock的概念深入理解-LMLPHP

结构的示意图

Java中ReentrantLock的概念深入理解-LMLPHP

05-29 00:46