<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.14.0</version>
</dependency>
public class RedissonRedLock {
private volatile static RedissonClient redisson=null;
private volatile static RedissonRedLock singleton=null;
public RedissonRedLock(){
Config config = new Config();
config.useSingleServer()
.setAddress("redis://127.0.0.1:6379")
.setDatabase(1)
.setPassword("password")
.setKeepAlive(true);
redisson= Redisson.create(config);
}
public static RedissonRedLock getSingleton() {
if (singleton == null) {
synchronized (RedissonRedLock.class) {
if (singleton == null) {
singleton = new RedissonRedLock();
}
}
}
return singleton;
}
private void test() throws InterruptedException {
RLock lock = redisson.getLock("myLock");
// or wait for lock aquisition up to 65 seconds
// and automatically unlock it after 10 seconds
boolean res = lock.tryLock(20, 10, TimeUnit.SECONDS);
System.out.println("res "+res);
if (res) {
try {
System.out.println("成功");
} finally {
lock.unlock();
}
}else {
}
}
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i <2 ; i++) {
getSingleton().test();
//TimeUnit.SECONDS.sleep(5);
}
}
} |