开发者社区 问答 正文

ReentrantLock的FairSync的tryAcquire的逻辑有哪些?

ReentrantLock的FairSync的tryAcquire的逻辑有哪些?

展开
收起
Aries- 2022-05-10 08:59:44 600 分享 版权
来自: 阿里技术
1 条回答
写回答
取消 提交回答
  • 如果此时state(private volatile int state)是0,那么就表示这个时候没有人占有锁。但因为是公平锁,所以还要判断自己是不是首节点,然后才尝试把状态设置为1,假如成功的话,就成功的占有了锁。2如果此时状态不是0,那么再判断当前线程是不是锁的owner,如果是的话,则state 递增,当state溢出时,会抛错。如果没溢出,则返回true,表示成功获取锁。上述都不满足,则返回false,获取锁失败。

    2022-05-10 22:52:58
    赞同 展开评论
问答地址: