Jvm Is ReentrantLock是一款重量较轻的锁?;
众所周知,HotSpot VM有偏置锁、自旋锁、轻量级锁、重量级锁等,而ReentrantLock是由AbstractQueuedSynchronizer(AQS)实现的。因此,ReentrantLock在JVM中是一个轻量级锁?这些是不同的概念 自旋锁、偏置锁等是用于实现锁定机制(互斥)的算法/结构的名称 在热点术语中,偏向锁、轻量级(瘦)锁和重量级(膨胀)锁是Java内部监视器的可能状态,即可以使用Jvm Is ReentrantLock是一款重量较轻的锁?;,jvm,reentrantlock,Jvm,Reentrantlock,众所周知,HotSpot VM有偏置锁、自旋锁、轻量级锁、重量级锁等,而ReentrantLock是由AbstractQueuedSynchronizer(AQS)实现的。因此,ReentrantLock在JVM中是一个轻量级锁?这些是不同的概念 自旋锁、偏置锁等是用于实现锁定机制(互斥)的算法/结构的名称 在热点术语中,偏向锁、轻量级(瘦)锁和重量级(膨胀)锁是Java内部监视器的可能状态,即可以使用synchronized关键字同步的Java对象 在不同的时刻,同一个Java监视器可能处于不
synchronized
关键字同步的Java对象
在不同的时刻,同一个Java监视器可能处于不同的状态,例如
ReentrantLock
是一个Java类,它独立于Java内部监视器实现互斥体的语义。也就是说,术语偏置、薄和膨胀不适用于ReentrantLock
同时,
ReentrantLock
实现也有多个不同的路径。在一个简单的情况下,当没有争用时,获取ReentrantLock
是单个CA的问题。在争用的情况下,ReentrantLock
涉及等待队列,并调用park
将当前线程从RUNNABLE
切换到waiting
状态。从这个意义上讲,该机制类似于JVM的薄锁和膨胀锁。但是再次强调:由于ReentrantLock不是一个固有的监视器,因此将它与JVM的轻量级和重量级锁进行比较是不正确的。这是不同的概念
自旋锁、偏置锁等是用于实现锁定机制(互斥)的算法/结构的名称
在热点术语中,偏向锁、轻量级(瘦)锁和重量级(膨胀)锁是Java内部监视器的可能状态,即可以使用synchronized
关键字同步的Java对象
在不同的时刻,同一个Java监视器可能处于不同的状态,例如
ReentrantLock
是一个Java类,它独立于Java内部监视器实现互斥体的语义。也就是说,术语偏置、薄和膨胀不适用于ReentrantLock
同时,ReentrantLock
实现也有多个不同的路径。在一个简单的情况下,当没有争用时,获取ReentrantLock
是单个CA的问题。在争用的情况下,ReentrantLock
涉及等待队列,并调用park
将当前线程从RUNNABLE
切换到waiting
状态。从这个意义上讲,该机制类似于JVM的薄锁和膨胀锁。但同样:由于ReentrantLock
不是一个内在的监视器,因此将它与JVM的轻量级和重量级锁进行比较是不正确的