转载请注明出处 http://www.paraller.com 原文排版地址 redisString;
/* * 方法是否可以调用 * * @author zhidaliao * @param key * @return remove false代表第一次加锁 true代表释放锁 / public boolean atomProcessor(String key, boolean remove) {
if (!remove) {
boolean flag = true;
try {
flag = redisString.setIfAbsent(key, "true");
redisString.getOperations().expire(key, 90, TimeUnit.SECONDS); //要确保你的程序有事务支持,或者中间状态
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
flag = false;
}
if (!flag) {
logger.debug("atomProcessor false key:" key);
}
return flag;
} else {
redisString.getOperations().delete(key);
return true;
}
} ```
全局锁
全局锁是为了让 synchronized 能够分布式化。 和内存锁这样的设计不同的是,全局锁需要阻塞(可以使用同步工具类
实现阻塞),等待锁释放
思考一:
redis锁 while循环
``` T1 -