news 2026/7/1 19:35:54

Java中的读写锁

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java中的读写锁

一、读写锁的概述

        之前提到锁(如Mutex和ReentrantLock)基本都是排他锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁同一时刻可以允许多个读线程访问,但是在写线程访问时(写锁是排他的),所有的读线程和其他写线程均被阻塞。读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得并发性相比一般的排他锁有了很大提升。

        假设在程序中定义一个共享的用作缓存的数据结构,它大部分时间提供读服务(例如查询和搜索),而写操作占有的时间很少,但是写操作完成之后的更新需要对后续的读服务可见(需要同步来完成)。在没有读写锁支持的(Java 5之前)时候,如果需要完成上述工作就要使用Java的等待通知机制,就是当写操作开始时,所有晚于写操作的读操作均会进入等待状态,只有写操作完成并进行通知之后,所有等待的读操作才能继续执行(写操作之间依靠synchronized关键进行同步),这样做的目的是使读操作能读取到正确的数据,不会出现脏读。改用读写锁实现上述功能,只需要在读操作时获取读锁,写操作时获取写锁即可。当写锁被获取到时,后续(非当前写操作线程)的读写操作都会被阻塞,写锁释放之后,所有操作继续执行,变得简单明了。一般情况下,读写锁的性能都会比排它锁好,因为大多数场景读是多于写的。在读多于写的情况下,读写锁能够提供比排它锁更好的并发性和吞吐量。Java并发包提供读写锁的实现是ReentrantReadWriteLock,它提供的特性如下图。

注意:

1、

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 10:14:56

如何为不同角色分配音色?VibeVoice角色配置技巧

如何为不同角色分配音色?VibeVoice角色配置技巧 在播客、有声书和虚拟访谈日益普及的今天,听众早已不再满足于机械朗读式的语音合成。他们期待的是自然流畅、富有情感张力的真实对话体验——就像两位老友围炉夜话,或主持人与嘉宾之间你来我往…

作者头像 李华
网站建设 2026/7/1 5:08:57

AndroidGen:AI自主操控安卓应用的免费新工具

AndroidGen:AI自主操控安卓应用的免费新工具 【免费下载链接】androidgen-glm-4-9b 项目地址: https://ai.gitcode.com/zai-org/androidgen-glm-4-9b 导语:智谱AI推出开源工具AndroidGen,基于GLM-4-9B大模型实现AI自主操控安卓应用&a…

作者头像 李华
网站建设 2026/7/1 23:12:22

电商系统Redis管理实战:从下载到应用

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个电商平台Redis管理模块,专门处理商品缓存、用户会话和秒杀活动数据。要求实现自动缓存预热、热点数据标识、过期策略管理等功能。前端展示缓存命中率、内存使用…

作者头像 李华
网站建设 2026/7/1 7:57:49

对比测评:传统下载VS智能获取华为ENSP的全流程效率

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 设计一个ENSP效率对比工具,需实现:1) 传统下载路径的步骤记录与耗时统计 2) 智能方案的自动化流程演示 3) 系统兼容性自动检测 4) 安装成功率对比统计 5) 生…

作者头像 李华
网站建设 2026/7/1 20:31:55

IBM Granite-4.0:23万亿token的多语言代码生成模型

IBM Granite-4.0:23万亿token的多语言代码生成模型 【免费下载链接】granite-4.0-h-small-base 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/granite-4.0-h-small-base 导语 IBM正式发布 Granite-4.0系列大语言模型,其中H-Small-Base…

作者头像 李华
网站建设 2026/7/1 4:16:46

用NFS快速构建分布式应用原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个NFS环境快速部署工具,能够一键在多个云服务器上配置NFS共享。支持AWS、阿里云等主流云平台,自动完成安全组配置、服务安装和权限设置。输出应包括连…

作者头像 李华