提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、JAVA细粒度、互斥KEY锁 —— KeyLock
前言:java中的几种锁:synchronized,ReentrantLock,ReentrantReadWriteLock已基本可以满足编程需求,但其粒度都太大,同一时刻只有一个线程能进入同步块,这对于某些高并发的场景并不适用。本文实现了一个基于KEY(主键)的互斥锁,具有更细的粒度,在缓存或其他基于KEY的场景中有很大的用处。下面将讲解这个锁的设计和实现二、实现示例
1.实现代码
代码如下(示例):
public class KeyLock<K> {
// 保存所有锁定的KEY及其信号量
private final ConcurrentMap<K, Semaphore> map = new ConcurrentHashMap<K, Semaphore>();
// 保存每个线程锁定的KEY及其锁定计数
private final ThreadLocal<Map<K, LockInfo>> local = new ThreadLocal<Map<K, LockInfo>>() {
@Override
protected Map<K, LockInfo

本文介绍了JAVA中用于细粒度、互斥控制的KeyLock,并提供了详细的实现代码示例,帮助理解其工作原理。
最低0.47元/天 解锁文章
2810

被折叠的 条评论
为什么被折叠?



