![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码
文章平均质量分 76
能白话的程序员♫
这个作者很懒,什么都没留下…
展开
-
AQS加锁流程(ReentrantLock)
定义 全称是AbstractQueuedSynchronizer,AQS是JUC提供的一个用于构建锁和同步容器的基础类。JUC包内许多类都是基于AQS构建的,例如ReentrantLock、 Semaphore、 CountDownI atch、ReentrantReadWriteLock、 FutureTask 等。通过内置的 CLH(FIFO)队列的变种来完成资源获取线程的排队⼯作,将每条将要去抢占资源的线程封装成⼀个 Node节点来实现锁的分配,有⼀个int类变量表示持有锁的状态,通...原创 2021-12-02 18:46:26 · 821 阅读 · 0 评论 -
【图解】【源码】公平锁⾮公平锁
公平锁 概念 所谓公平锁,就是多个线程按照申请锁的顺序来获取锁,类似排队,先到先得。在获取锁的自由状态时,若锁可获取不会直接获取该锁,而是需要判断是否需要入队(AQS)。 图解 由如下图可知,tn线程创建成功,进行锁状态的判断,当能获取自由状态时,需要判断是否需要入队,若不需要直接进行加锁成功,若需要进行入队操作。获取锁流程的源码后续会有专门的章节来详细讲述。 源码 从代码中也清楚的看到,没有直接持有锁的操作,而是对队列进行操作。 本文中只了解是对队列的操作即可,后续有专门文章对队列操..原创 2021-12-01 17:58:47 · 417 阅读 · 0 评论