Skip to content

Commit 4ba5c4b

Browse files
committed
aqs
1 parent 06e96a7 commit 4ba5c4b

4 files changed

Lines changed: 6 additions & 2 deletions

File tree

docs/.vuepress/sidebar.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,10 @@ export const sidebarConfig = defineSidebarConfig({
470470
text: "CAS的原理",
471471
link: "cas",
472472
},
473+
{
474+
text: "AQS详解",
475+
link: "aqs",
476+
},
473477
{
474478
text: "锁",
475479
link: "lock",

docs/thread/aqs.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ compareAndSetState()
3434

3535
而AQS类本身实现的是一些排队和阻塞的机制,比如具体线程等待队列的维护(如获取资源失败入队/唤醒出队等)。它内部使用了一个先进先出(FIFO)的双端队列,并使用了两个指针head和tail用于标识队列的头部和尾部。其数据结构如图:
3636

37-
![](http://concurrent.redspider.group/article/02/imgs/AQS%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.png)
37+
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/thread/aqs-c294b5e3-69ef-49bb-ac56-f825894746ab.png)
3838

3939
但它并不是直接储存线程,而是储存拥有线程的Node节点。
4040

@@ -225,7 +225,7 @@ final boolean acquireQueued(final Node node, int arg) {
225225
226226
总结起来的一个流程图:
227227

228-
![acquire流程](http://concurrent.redspider.group/article/02/imgs/acquire%E6%B5%81%E7%A8%8B.jpg)
228+
![acquire流程](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/thread/aqs-a0689bb2-9b18-419d-9617-6d292fbd439d.jpg)
229229

230230
## 释放资源
231231

37.5 KB
Loading
191 KB
Loading

0 commit comments

Comments
 (0)