首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReentrantLock tryLock()

ReentrantLock tryLock()
EN

Stack Overflow用户
提问于 2017-10-08 17:10:17
回答 1查看 245关注 0票数 0

这是ReentrantLock#tryLock的源代码:

代码语言:javascript
复制
public boolean tryLock() {
        return sync.nonfairTryAcquire(1);
} 

我的问题是:

ReentrantLock中有两种类型的同步器: FairSync和NonFairSync。为什么只使用NonFairSync?

EN

回答 1

Stack Overflow用户

发布于 2017-10-08 19:47:21

非公平意味着当锁准备好被新线程获得时,锁不保证谁获得锁的公平性(假设此时有多个线程请求锁)。换句话说,可以想象,一个线程可能会持续饥饿,因为其他线程总是设法任意获得锁,而不是它。

公平锁模式的行为更像是先来先服务,其中线程被保证一定程度的公平性,它们将以公平的方式获得锁(例如,在线程开始等待很长时间之后)。

如果重入锁是公平的,那么根据上面对公平的定义,锁不会被分配给同一个线程,而是一直在等待的另一个线程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46629387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档