java 分布式锁代码
时间: 2023-07-08 22:45:55 浏览: 75
以下是基于 Redis 实现的 Java 分布式锁代码示例:
```java
import redis.clients.jedis.Jedis;
import redis.clients.jedis.params.SetParams;
public class DistributedLock {
private final Jedis jedis;
private final String lockKey;
private final int expireTime;
private final String lockValue;
public DistributedLock(Jedis jedis, String lockKey, int expireTime, String lockValue) {
this.jedis = jedis;
this.lockKey = lockKey;
this.expireTime = expireTime;
this.lockValue = lockValue;
}
public boolean lock() {
SetParams params = SetParams.setParams().nx().px(expireTime);
String result = jedis.set(lockKey, lockValue, params);
return "OK".equals(result);
}
public void unlock() {
String script = "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end";
jedis.eval(script, 1, lockKey, lockValue);
}
}
```
使用示例:
```java
Jedis jedis = new Jedis("localhost", 6379);
DistributedLock lock = new DistributedLock(jedis, "lockKey", 1000, "lockValue");
if (lock.lock()) {
try {
// 业务逻辑代码
} finally {
lock.unlock();
}
}
```
以上代码仅是示例,实际应用中需要考虑更多的情况和异常处理。