乐观锁与悲观锁-Redisso
原创同步锁
/**
* 确保您可以读取最新数据。在修改期间,写锁是一个互斥锁(互斥锁)。读取锁是共享锁
* 如果写入锁未释放,则读取必须等待。
*/
@GetMapping("/read")
@ResponseBody
public String readValue() {
RReadWriteLock readWriteLock = redisson.getReadWriteLock("rw-lock");
String s = "";
RLock rLock = readWriteLock.readLock();
try {
rLock.lock();
s = stringRedisTemplate.opsForValue().get("writeValue");
} catch (Exception e) {
e.printStackTrace();
} finally {
rLock.unlock();
}
return s;
}
@GetMapping("/write")
@ResponseBody
public String writeValue() {
RReadWriteLock readWriteLock = redisson.getReadWriteLock("rw-lock");
String s = "";
RLock rLock = readWriteLock.writeLock();
try {
//1,更改数据和写入锁定,读取数据和读取锁定
rLock.lock();
TimeUnit.SECONDS.sleep(10);
s = UUID.randomUUID().toString();
stringRedisTemplate.opsForValue().set("writeValue", s);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
rLock.unlock();
}
return s;
}
读 + 读 :相当于无锁,并发读取,仅在redis它在中有很好的记录,所有当前的读锁都将同时成功锁定。
写 + 读 :等待写入锁定释放。
写 + 写入:阻塞方法
读 + 写作:有一个阅读锁,写作也需要等待。
/只要有写作,我们就必须等待。
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除