![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
lock
有头发的猩猩
这个作者很懒,什么都没留下…
展开
-
什么是公平锁和非公平锁,基于Lock
非公平锁:首先会在 lock方法调用加锁的时候去抢锁(公平锁调用lock不会上来就去拿锁)如果加锁失败则去看为什么失败(是否锁被人持有),在判断的时候如果锁没有被人持有非公平锁就会直接去加锁(不会判断是否有人排队),成果则进入同步块,失败则park(真正的排队)公平锁:第一次加锁的时候,他不会去尝试加锁,它回去看一下前面有没有人排队没如果有人排队,则进入队列(并不等于排队),然后还不会立刻等待,还会再次看一下有没有拿锁的资格(前面的元素是否为 head),如果有资格(前面那个人正好是h.原创 2020-09-08 17:09:06 · 587 阅读 · 0 评论 -
锁:可重入式独占锁
什么是可重入锁(ReentrantLock)? 线程可以重复进入任何一个它已经拥有的锁所同步着的代码块,synchronized、ReentrantLock都是可重入的锁。在实现上,就是线程每次获取锁时判定如果获得锁的线程是它自己时,简单将计数器累积即可,每释放一次锁,进行计数器累减,直到计算器归零,表示线程已经彻底释放锁。项目示例:https://gitee.com/...原创 2019-12-17 16:29:26 · 280 阅读 · 0 评论