ReentrantLock源码解析是什么
介绍
ReentrantLock(可重入锁)是一种互斥锁,它的实现与 synchronized 关键字类似,但是提供了比 synchronized 更多的功能。ReentrantLock 支持两种锁模式:公平锁和非公平锁。
公平锁
公平锁是指多个线程按照申请锁的顺序来获取锁,类似排队,先来后到,先申请的先得到锁,这样也就保证了公平性。
非公平锁
非公平锁是指多个线程获取锁的顺序没有遵循申请锁的顺序,有可能后申请的线程比先申请的线程优先得到锁,这样可能造成先申请的线程永远得不到锁,类似抢占。
ReentrantLock实现
ReentrantLock 实现了一个可重入的互斥锁,该锁支持两种模式:公平锁和非公平锁,默认情况下使用非公平锁。ReentrantLock 内部使用一个 sync 对象来实现锁的功能,sync 对象是一个 AQS 的实现类,AQS 是一个抽象类,它定义了一些模板方法,用于实现不同种类的锁,ReentrantLock 就是其中的一种实现。
ReentrantLock源码解析
上面是 ReentrantLock 的源码,其中 Sync 类是 ReentrantLock 的内部类,它是一个抽象类,继承了 AbstractQueuedSynchronizer,它实现了一个可重入的互斥锁,它定义了一个 nonfairTryAcquire() 方法,该方法用于实现非公平锁,它会尝试去获取锁,如果获取成功则返回 true,否则返回 false。
上一篇
VSCode中如何配置vue 下一篇
linux中基础命令怎么用 猜您想看
-
如何成为最佳团队领袖
如何成为最佳团...
2023年05月15日 -
如何在Linux中使用free命令查看系统内存使用情况
SEO软文:如...
2023年05月06日 -
java内嵌activeX控件怎么使用
1、什么是内嵌...
2023年05月26日 -
怎么编写同时在PyTorch和Tensorflow上工作的代码
1. 了解Py...
2023年07月21日 -
怎么解决IDEA编译java报错找不到符号问题
一、简介IDE...
2023年05月26日 -
python反转字符串额度方法有哪些
1、利用切片P...
2023年05月22日