锁专题(1)java 常见锁介绍,高级程序员必知必会( 四 )


java.util.concurrent.locks.ReadWriteLock 接口允许一次读取多个线程 , 但一次只能写入一个线程:
读锁 - 如果没有线程锁定ReadWriteLock进行写入 , 则多线程可以访问读锁 。
写锁 - 如果没有线程正在读或写 , 那么一个线程可以访问写锁 。
其中:
读取锁允许多个reader线程同时持有 , 而写入锁最多只能有一个 writer 线程持有 。
读写锁的使用场合是:读取数据的频率远大于修改共享数据的频率 。
在上述场合下使用读写锁控制共享资源的访问 , 可以提高并发性能 。
如果一个线程已经持有了写入锁 , 则可以再持有读锁 。
相反 , 如果一个线程已经持有了读取锁 , 则在释放该读取锁之前 , 不能再持有写入锁 。
可以调用写入锁的 newCondition() 方法获取与该写入锁绑定的 Condition 对象 , 此时与普通的互斥锁并没有什么区别 , 但是调用读取锁的 newCondition() 方法将抛出异常 。
小结本文作为锁专题系列的开篇 , 旨在为了让各位极客们对 java 中的锁有一个大而全的理解 。
希望对你有帮助 , 感兴趣的可以关注一下 , 便于实时接收最新内容 。
觉得本文对你有帮助的话 , 欢迎点赞评论收藏转发一波 。
各位极客的点赞转发收藏 , 是我创作的最大动力~
不知道你有哪些收获呢?或者有其他更多的想法 , 欢迎留言区和我一起讨论 , 期待与你的思考相遇 。