马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
各人好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技能栈” 专栏的第 030 篇文章,在 “栗筝i 的 Java 技能栈” 这个专栏中我会连续为各人更新 Java 技能相干全套技能栈内容。专栏的重要目的是已经有肯定 Java 开辟履历,并渴望进一步美满本身对整个 Java 技能体系来充实本身的技能栈的同砚。与此同时,本专栏的全部文章,也都会预备富足的代码示例和美满的知识点梳理,因此也非常得当零根本的小白和要预备工作口试的同砚学习。固然,我也会在须要的时间举行相干技能深度的技能解读,信赖纵然是拥有多年 Java 开辟履历的从业者和大佬们也会有所劳绩并找到爱好。
–
在多线程编程中,锁机制是包管线程安全的焦点技能之一。Java 提供了多种锁机制,此中 ReentrantLock 是一种机动且功能丰富的可重入锁,具有公平锁、非公平锁等特性,可以或许更换传统的 synchronized 关键字来实现更复杂的并发控制。本文将深入探究 ReentrantLock 的工作原理及其背后的关键组件——AbstractQueuedSynchronizer(AQS)。通过相识 AQS 的计划和实现,读者将把握怎样通过锁机制在高并发环境下确保数据的划一性和线程的安全性。
<hr>
<hr> 1、Lock 锁
1.1、为什么利用 Lock
synchronized 线程期待时间过长,获取锁的线程由于要期待 IO 大概其他缘故因由(好比调用 sleep 方法)被壅闭了,但是又没有开释锁,其他线程便只醒目巴巴地期待,这将极大的影响步调实验服从。
synchronized 操纵场景,如果多个线程都只是举行读操纵,以是当一个线程在举行读操纵时,其他线程只能期待无法举行读操纵。
1.2、注意事项
也就是说 Lock 提供了比 synchronized 更多的功能。但是要注意以下几点
- Lock 不是 Java 语言内置的,synchronized 是 Java 语言的关键字,因此是内置特性。Lock 是一个类,通过这个类可以实现同步访问;
- Lock 和 synchronized 有一点非常大的差异,采取 synchronized 不必要用户去手动开释锁,当 synchronized 方法大概 synchronized 代码块实验完之后,体系会自动让线程开释对锁的占用;而 Lock 则必须要用户去手动开释锁,如果没有自动
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |