| 接口 | 说明 |
|---|---|
| LockTemplate |
Lock template.
|
| 类 | 说明 |
|---|---|
| DatabaseLockTemplate |
Lock template based database.
|
| RedisLock |
Distributes lock based redis(unlock使用redis lua script)
可重入锁的一般场景:当前线程多次调用含有锁操作的函数、当前线程含有锁操作的函数自身调用
待完善:
1、获取锁成功的线程 A 定时续期锁:WatchDog
2、获取锁失败的线程 B 阻塞等待并监听(订阅)事件:subscribe
3、线程 A 释放锁时发送消息事件通知等待锁的线程B:publish
RedisLockFactory factory = new RedisLockFactory(redisTemplate);
class X {
public void m() {
Lock lock = factory.create("lockKey", 3000);
lock.lock(); // block until acquire lock or timeout
try {
// ... method body
} finally {
lock.unlock()
}
}
}
class Y {
public void m() {
Lock lock = factory.create("lockKey", 3000);
if (!
|
| RedisLockFactory |
Redis lock factory
|
| RedisLockTemplate |
Lock template based redis.
|
Copyright © 2024. All rights reserved.