锁
Lvshen的技术小屋
技术宅
展开
-
Java锁-synchronized底层原理
Java中的锁可以分为隐式锁和显示锁,Lock接口的锁都是显示锁。JVM内置锁就是隐式锁,synchronized就是隐式的锁。 显示锁:需要手动释放锁,可以设置是否为公平锁 隐式锁:不需要手动释放锁,非公平锁 Monitor Lock接口实现的锁底层是通过AQS同步队列实现的。用到了unsafe.park()方法。synchronized 底层有一个monitor监视器,会监控持有锁的对象。如下图: monitorenter表示当前程序将进入同步块mon...原创 2020-09-05 08:37:06 · 335 阅读 · 0 评论 -
Redis分布式可重入锁实现
可重入锁 一个线程可以多次获取该锁,说明这把锁是可重入的。下面我们来实现Redis分布式可重入锁。我们可以用线程的ThreadLocal变量存储当前持有锁的计数。 核心代码 下面的代码并不完善,只是提供了一个思路。 @Component public class RedisWithReentrantLock { @Autowired private RedisTemplate redisTemplate; private static fina...原创 2020-09-05 08:32:52 · 622 阅读 · 0 评论