class Locker extends Object
利用数据库的持久化锁。
静态方法 lockExit、lock、unlock、update 等
| Type | Name and description |
|---|---|
static Object |
constraints |
String |
key锁名:唯一标识符 |
Date |
lockTime创建时间 |
String |
lockUser属主用户名 |
Long |
lockUserId属主:用户ID,或者为0(锁和用户无关的情况) |
static Object |
mapping |
Integer |
timeout失效时间间隔 |
Date |
timeoutTime失效时间 |
Date |
updateTime更新时间 |
String |
updateUser更新用户名 |
| Type | Name and description |
|---|---|
static Map |
getLocker(String key)获得锁的详细信息 |
static boolean |
isLocked(String key, boolean userAware = true)判断是否被加锁 |
static boolean |
lock(String key, boolean userAware = true, Integer timeout = null, Integer waitTime = 0, Integer waitInterval = 200)加锁 |
static boolean |
lockExit(String key, boolean userAware = true, Integer timeout = null)加锁。 |
static void |
test() |
String |
toString() |
static Integer |
unlock(String key, boolean userAware = true)解锁 |
static Integer |
update(String key, boolean userAware = true, Integer timeout = null)更新锁的时间戳,包括updateTime、updateUser |
static boolean |
wait(String key, boolean userAware, Integer waitTime, Integer waitInterval = 200)等待锁被释放 |
| Methods inherited from class | Name |
|---|---|
class Object |
Object#wait(long, int), Object#wait(long), Object#wait(), Object#equals(Object), Object#toString(), Object#hashCode(), Object#getClass(), Object#notify(), Object#notifyAll() |
锁名:唯一标识符
创建时间
属主用户名
属主:用户ID,或者为0(锁和用户无关的情况)
失效时间间隔
失效时间
更新时间
更新用户名
获得锁的详细信息
判断是否被加锁
userAware - 如果为真,则被其他用户加锁返回true,如果是被自己加锁,则返回false加锁
key - 锁名,每把锁的唯一关键字userAware - 是否和用户关联,默认为真。
true: 如果用户之前已加锁,则更新时间戳后返回true;如果其他用户加锁,则返回false或等待;
false: 只要和锁名匹配的锁存在,则返回false或等待。timeout - 失效时间(毫秒),默认为30分钟,如果为null也等于采用默认时间waitTime - 等待时间(毫秒),如果发现已加锁,是否等待解锁。
默认为0即不等待;如果为大于0的整数,则最多等待该时间后返回;
如果为负数,则一直等待:注意不要发生死锁,包括数据库链接此时也不会被释放的!waitInterval - 等待过程中,轮询的时间间隔,单位为毫秒,默认为200ms加锁。如果发现已被其他用户加锁,则直接返回false,不等待。
解锁
key - 锁名userAware - 注意要和lock时的参数保持一致,否则可能发生锁不会被删除(为 true 时)、或误删除其他人加的锁(为 false 时)的错误情况更新锁的时间戳,包括updateTime、updateUser
key - 锁名userAware - 注意要和lock时的参数保持一致,会返回-1timeout - 失效时间(毫秒),默认为null,即采用锁的原始失效时间设置等待锁被释放