java - 读写锁中 写锁的降级问题

查看:353
本文介绍了java - 读写锁中 写锁的降级问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

写锁降级的时候 要求当前已经获取到写锁的线程把持住写锁,然后获取读锁,随后释放写锁。

那么为什么要求把持住写锁呢??

上图中提到 那么当前线程无法感知线程T的数据更新 这个如何理解。如果线程T获取到了写锁,然后对数据进行了更新,在没有释放写锁之前,当前线程无法感知到数据的更新,这个是没问题的吧,但是一旦线程T释放 写锁,那么当前线程就可以感知到数据的更新了,这里理解应该没问题吧?

help me to explain,thx

解决方案

这是在解释锁降级吧,首先写锁是独占的,读锁是共享的,然后读写锁是线程间互斥的,锁降级的前提是所有线程都希望对数据变化敏感,但是因为写锁只有一个,所以会发生降级。
如果先释放写锁,再获取读锁,可能在获取之前,会有其他线程获取到写锁,阻塞读锁的获取,就无法感知数据变化了。所以需要先hold住写锁,保证数据无变化,获取读锁,然后再释放写锁。

这篇关于java - 读写锁中 写锁的降级问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆