课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
读写锁的应用是许多软件编程开发项目中非常常用的一个编程开发技术,而本文我们就通过案例分析来简单了解一下,读写锁如何实现软件缓存功能。
1、SDK已经有管程了,不是可以解决所有的并发问题的吗,为什么还要有读写锁?
不同的场景下使用不同的锁效果是不一样的,我们的读写锁用在读多写少的场景下那是非常有用的。
2、读写锁是我们JAVA特有的吗?他有什么原则?
读写锁并不是java特有的,是通用的一个技术方案。读写锁的话有三个基本原则:
同一时刻,允许多个线程去读一个变量
同一时刻,只允许一个线程去写变量
当有一个线程在写变量的时候,是不能读的
3、读写锁在java中是怎样实现的,怎样使用?
ReadWriteLock他只是一个接口,他的实现子类是ReentrantReadWriteLock。
用的时候直接调用读锁或者写锁readLock()
4、既然说了读写锁适合我们缓存的场景下的使用,那读写锁怎样快速的实现一个缓存呢?
我们定义一个类,这个类呢有k和v变量,代表缓存的key和value。有get()读方法,和put()写方法。读的时候上读锁,写的时候上写锁。
5、实现缓存,会存在数据初始化的问题,那么我们缓存里面的数据该怎样初始化呢?
对于数据比较少的,我们直接一次性把数据装进缓存,简单粗暴又高效。
对于数据比较多的,要读数据的时候,我们再把它存进缓存里面来。
6、为什么要再次进行验证?
因为我们的读是并发的,不确定其它线程在这个期间读过没有,为了防止重复读,所以要再次验证。
注意:我们的读写锁是可以升级和降级的。但是java中是不可以升级的,升级的话会造成死锁的现象发生。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。