锁
文章平均质量分 94
yarnecn
这个作者很懒,什么都没留下…
展开
-
从ReentrantLock的实现了解AQS(下)
文章目录锁状态存储StateexclusiveOwnerThread线程队列队列节点队列操作方法hasQueuedPredecessors()acquire(核心)拿锁安排入队睡眠入队二次确认是否进入睡眠发现可以拿锁发现确实没希望确认前辈睡了我也休息了总结上节在讨论ReentrantLock的过程中,我们遇到了几个在AQS中实现的方法,比如AQS的核心逻辑实现acquire、判断是否有前辈的方法hasQueuedPredecessors、尝试占锁的方法compareAndSetState、拿到锁之后设置锁原创 2021-10-17 02:37:15 · 156 阅读 · 0 评论 -
从ReentrantLock的实现了解AQS(上)
文章目录ReentrantLock内部结构SyncFairSync1. 无等待或优先才给机会尝试2. 递归调用NonfairSync1. 立即尝试2. 再次尝试3. 递归调用NonfairSync vs FairSync ?疑问解答之前文章很多次提到了AQS,AQS全名是AbstractQueuedSynchronizer,它是java.util.concurrent.locks包下的一个抽象类,和它的包名一样,AQS主要的作用就是用来实现锁,它跟synchronized的区别是,synchroniz原创 2021-10-16 00:23:37 · 121 阅读 · 0 评论 -
如何区分Java中那些锁
文章目录悲观锁&乐观锁悲观锁如何理解加锁?如何理解拿到锁?乐观锁CAS自旋锁优缺点自适应自旋锁读写锁独占锁、互斥锁、排他锁&共享锁可重入锁&不可重入锁不可重入锁会造成什么问题?可重入锁偏向锁、轻量级锁、重量级锁偏向锁轻量级锁重量级锁公平锁&非公平锁公平锁非公平锁实现分段锁总结锁的存在就是要保证一个资源片段在多线程的竞争处理的情况下,最终资源处理的结果是原子的。之前文章讲了synchronized的一些知识,我们了解了synchronized关键字在Java中的含义,以及内原创 2021-10-04 01:02:20 · 156 阅读 · 0 评论 -
synchronized其他知识
文章目录拿什么作为锁使用类实例对象作为锁使用类class对象作为锁synchronized的四种状态锁升级对象头monitor升级过程无锁偏向锁轻量级锁重量级锁释放总结上篇文章提到过,synchronized可以保证多线程之间的可见性和原子性。而且我们平时用的时候,很多时候都是直接在方法上加一个synchronized,这片文章主要介绍synchronized在使用过程中需要或者在synchronized实现上需要我们了解的一些细节以及注意事项拿什么作为锁在使用synchronized时候,有一点需要原创 2021-09-12 22:58:53 · 100 阅读 · 0 评论