分布式锁

2019-07-24 10:51:19 +08:00
 AnswerNo2
之前写的一个生产上的分布式锁,你们会怎么写?

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;
}
740 次点击
所在节点    程序员
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/585686

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX