你真的知道如何使用锁吗?

简介: 你真的知道如何使用锁吗?

正文


“锁”这个字在平时的生活中,频繁的出现在周围的生活中。在代码的世界里,锁的种类很多,比如:共享锁、排他锁、读写锁、行锁、表锁、间隙锁、next-key锁、记录锁、可重入锁等等等。当然上面的所说的种类分布于各个技术中。今天,一起来聊一聊显式锁隐式锁

在Java体系中,显式锁隐式锁。分别是由ReentrantLock与synchronized这两个组件来展现的。显式锁:手动的加锁以及解锁。隐式锁,JVM层面自动的加锁以及解除锁。

synchronized(隐式锁)底层是由monitorenter和monitorexit实现的。JVM 自动的帮助实现对于共享代码区域的访问读写。ReentrantLock(式锁)我们需要手动的加锁以及解锁。

所以使用锁选择的规则是可以分为2个纬度的。

第一个纬度就是对于Java语言的熟练程度,当不熟悉Java语言的运行机制,这个时候,选择synchronized是一个比较好的选择,避免了一些忘记的操作。ReentrantLock他是手动的,会忘记解锁,这个时候,其他的线程就会无限的等待。

第二个纬度就是根据业务来进行选择。当我们的业务属于高并发,大规模的请求的时候,如果使用synchronized会产生请求线程堆积的问题,如果一个业务的处理时间比较长的话,就会出现服务不可用、响应慢的情况,在严重就是服务直接挂掉。这个问题是非常严重的问题。这个时候,应当选择ReentrantLock,他足够的灵活,他给我们提供了一个有效的方法可以在有限的时间内查看是否自己获取到锁的信息,如果不能获取到,那么就会直接抛出异常,采用兜底服务处理。这就保证了防止请求的线程堆积造成严重的后果。所以,选择一个合适的锁,对于我们业务是十分重要的。要根据具体的环境选择合适的。

相关文章
|
11月前
|
弹性计算 关系型数据库 测试技术
RDS通用云盘核心能力
本次实验主要体验RDS通用云盘的三项核心能力:IO加速、IO突发和数据归档。首先创建实验资源,包括RDS MySQL实例和ECS实例,耗时约5分钟。接着通过sysbench导入数据并配置安全设置。 在体验阶段,我们对比了开启和关闭IO加速及IO突发功能对RDS性能的影响,观察到QPS有显著差异。最后,通过将数据从云盘迁移到OSS中,展示了冷存层的数据归档功能,并进行RDS硬盘缩容,验证了其成本优势。整个实验过程详细记录了每一步操作,确保用户能直观感受到RDS通用云盘带来的性能提升和成本优化。
507 131
RDS通用云盘核心能力
|
10月前
|
人工智能 新能源 调度
中国信通院栗蔚:云计算与AI加速融合,如何开启智算时代新纪元?
中国信通院栗蔚:云计算与AI加速融合,如何开启智算时代新纪元?
355 17
|
Linux
Linux|编译最新版的openssh-server-9.3的rpm包的使用方法(二)
Linux|编译最新版的openssh-server-9.3的rpm包的使用方法(二)
955 0
|
前端开发 JavaScript 新能源
【Echarts大屏】新能源汽车大屏(附源码一键复制)
【Echarts大屏】新能源汽车大屏(附源码一键复制)
|
数据库
数据库课设之学生信息管理系统(一)
数据库课设之学生信息管理系统
629 0
数据库课设之学生信息管理系统(一)
|
存储 设计模式 缓存
C++享元模式探索:轻松优化内存使用和性能提升之道
C++享元模式探索:轻松优化内存使用和性能提升之道
210 0
|
机器学习/深度学习 缓存 并行计算
【ASPLOS 2023】图神经网络统一图算子抽象uGrapher,大幅提高计算性能
近日,阿里云机器学习PAI平台关于图神经网络统一高性能IR的论文《uGrapher》被系统领域顶会ASPLOS 2023接收。
【ASPLOS 2023】图神经网络统一图算子抽象uGrapher,大幅提高计算性能
|
缓存 前端开发 算法
web前端面试高频考点——Vue3.x深入理解(v-model参数用法、watch和watchEffect区别、Vue3快于Vue2、Vite启动快的原因)
web前端面试高频考点——Vue3.x深入理解(v-model参数用法、watch和watchEffect区别、Vue3快于Vue2、Vite启动快的原因)
684 0
HMI-31-【运动模式】解决音乐模块图片显示问题
上一篇中,我们基本实现了音乐模块的布局显示,但是留了个小尾巴,就是图片显示,这个模块中,图片不是方正的,而是有透视的,但是呢,Qt的图像显示显示,我还没有研究那么深入,所以目前只能是像,但是肯定不是真真的透视。我是利用遮罩来实现的,其实还是平面的图片,仅仅是用了一个透视的图片模版来覆盖一下。
HMI-31-【运动模式】解决音乐模块图片显示问题
|
Linux 网络安全 Windows
【lrzsz】安装lrzsz工具实现Linux和Windows系统之间文件便捷上传与下载
【lrzsz】安装lrzsz工具实现Linux和Windows系统之间文件便捷上传与下载
886 0