ReentrantLock和synchronized的区别

1、ReentrantLock是一个类,synchronized是一个关键字,都是在JVM层面实现的互斥锁的方式。 2、功能方面ReentrantLock的功能要比synchrized更为全面,RenntrantLock能够支持公平锁和非公平锁,synchronized只能支持非公平锁、Reentr

样子的木偶 发布于 2023-12-30

ReentrantLock和synchronized的区别

1、ReentrantLock是一个类,synchronized是一个关键字,都是在JVM层面实现的互斥锁的方式。 2、功能方面ReentrantLock的功能要比synchrized更为全面,RenntrantLock能够支持公平锁和非公平锁,synchronized只能支持非公平锁、Reentr

样子的木偶 发布于 2023-12-30

AQS唤醒节点时为什么要从后往前找?

第一点:这个与AQS插入节点有关,在插入的时候,比如插入A节点到AQS队列中 ,是先使用上一个指针prev指向队列的尾,然后让AQS的tail指针指向A节点,但是这个时候AQS的尾部节点的next指针依旧指向为null没有指向 A节点,如果要从前往后查找节点这个时候刚刚插入的节点将会找不到。 另外一

样子的木偶 发布于 2023-12-24

什么是AQS

AQS就是AbstractQueuedSynchronizer抽象类,是JUC包下的基类。 JUC下很多内容都是基于AQS实现,例如ReentrantLock、ThreadPoolExecutor,阻塞队列、CountDownLatch、Semaphore、CyclicBarrier都是基于AQS实

样子的木偶 发布于 2023-12-23

synchronized的实现

synchronized是基于对象实现的。 先要对java中对象在堆内存的存储有一个了解。 以创建对象object为例: 在创建对象时一共会在堆内存中开辟三块空间,分别存储对象头、实例数据和对象填充。 在对象头中主要存储的是MarkWord、ClassPoint,其中对象的锁信息都是存储在MarkW

样子的木偶 发布于 2023-12-22