ReenTrantLock

邮差的信 提交于 2019-12-13 22:37:27

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

ReentrantLock的核心是AQS,那么它怎么来实现的,继承吗?说说其类内部结构关系。

ReenTrantLock是实现Lock接口,内部有三个内部类  Sync ,NonFairSync ,FairSync ,后两个继承自Sync,而Sync继承自AQS ,NoFairSync是用来实现非公平锁,FireSync用来实现公平锁

ReentrantLock是如何实现公平锁以及非公平锁的?

公平锁是使用FairSync了,是直接使用aqs的acquire方法就好了,CLH队列为FIFO所以可以直接保证,具体可以看AQS实现。

非公平锁是使用NonFairSync.lock(),如果可以发现资源是空闲状态就直接占,不是空闲就尝试获取。

ReentrantLock默认实现的是公平还是非公平锁?

默认是非公平锁,实例化的时候传true时为公平锁(new ReenTrantLock(true))

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!