| 程序包 | 说明 |
|---|---|
| cn.ponfee.disjob.common.lock |
| 类和说明 |
|---|
| DoInLocked
Do something in locked context.
|
| 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 (!
|
Copyright © 2024. All rights reserved.