这是一个创建于 1983 天前的主题,其中的信息可能已经有所发展或是发生改变。
之前写的一个生产上的分布式锁,你们会怎么写?
public static boolean tryGetLock(String lockKey, String requestId, int waitTimeSecond, int expireTime) {
// 获取锁的超时时间,超过这个时间则放弃获取锁
long end = System.currentTimeMillis() + (waitTimeSecond * 1000);
while (System.currentTimeMillis() < end) {
boolean flag = getRedis().opsForValue().setIfAbsent(lockKey, requestId);
if (flag) {
RedisUtil.expire(lockKey, expireTime);
return flag;
}
try {
Thread.sleep(10);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
return false;
}