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