@@ -203,7 +203,7 @@ public ReentrantLock(boolean fair) {}
203203 * ` NonfairSync ` - 非公平锁版本。
204204
205205<p align =" center " >
206- <img src =" https://raw.githubusercontent.com/dunwu/javase-notes /master/images/concurrent/ReentrantLock-diagram.png " >
206+ <img src =" https://raw.githubusercontent.com/dunwu/JavaSE /master/images/concurrent/ReentrantLock-diagram.png " >
207207</p >
208208
209209### 示例
@@ -237,7 +237,7 @@ public class ReentrantLockDemo {
237237}
238238```
239239
240- :point_right : [ 更多示例] ( https://github.com/dunwu/javase-notes /tree/master/codes/concurrent/src/main/java/io/github/dunwu/javase/concurrent/lock )
240+ :point_right : [ 更多示例] ( https://github.com/dunwu/JavaSE /tree/master/codes/concurrent/src/main/java/io/github/dunwu/javase/concurrent/lock )
241241
242242## ReadWriteLock 和 ReentrantReadWriteLock
243243
@@ -254,7 +254,7 @@ ReentrantReadWriteLock 实现了 ReadWriteLock 接口,所以它是一个读写
254254“读-写”线程、“写-写”线程之间存在互斥关系。
255255
256256<p align =" center " >
257- <img src =" https://raw.githubusercontent.com/dunwu/javase-notes /master/images/concurrent/ReadWriteLock.jpg " >
257+ <img src =" https://raw.githubusercontent.com/dunwu/JavaSE /master/images/concurrent/ReadWriteLock.jpg " >
258258</p >
259259
260260### 源码
@@ -479,7 +479,7 @@ final boolean acquireQueued(final Node node, int arg) {
479479acquireQueued Before
480480
481481<p align =" center " >
482- <img src =" https://raw.githubusercontent.com/dunwu/javase-notes /master/images/concurrent/aqs-acquireQueued-before.png " >
482+ <img src =" https://raw.githubusercontent.com/dunwu/JavaSE /master/images/concurrent/aqs-acquireQueued-before.png " >
483483</p >
484484
485485` setHead ` 方法
@@ -495,7 +495,7 @@ private void setHead(Node node) {
495495将当前节点通过 setHead 方法设置为队列的头结点,然后将之前的头结点的 next 域设置为 null,并且 pre 域也为 null,即与队列断开,无任何引用方便 GC 时能够将内存进行回收。
496496
497497<p align =" center " >
498- <img src =" https://raw.githubusercontent.com/dunwu/javase-notes /master/images/concurrent/aqs-acquireQueued-after.png " >
498+ <img src =" https://raw.githubusercontent.com/dunwu/JavaSE /master/images/concurrent/aqs-acquireQueued-after.png " >
499499</p >
500500
501501##### shouldParkAfterFailedAcquire
@@ -537,7 +537,7 @@ private final boolean parkAndCheckInterrupt() {
537537综上所述,就是 acquire 的完整流程。可以以一幅图来说明:
538538
539539<p align =" center " >
540- <img src =" https://raw.githubusercontent.com/dunwu/javase-notes /master/images/concurrent/aqs-acquire-flow.png " >
540+ <img src =" https://raw.githubusercontent.com/dunwu/JavaSE /master/images/concurrent/aqs-acquire-flow.png " >
541541</p >
542542
543543#### 释放独占锁
@@ -717,7 +717,7 @@ private boolean doAcquireNanos(int arg, long nanosTimeout)
717717```
718718
719719<p align =" center " >
720- <img src =" https://raw.githubusercontent.com/dunwu/javase-notes /master/images/concurrent/aqs-doAcquireNanos-flow.png " >
720+ <img src =" https://raw.githubusercontent.com/dunwu/JavaSE /master/images/concurrent/aqs-doAcquireNanos-flow.png " >
721721</p >
722722
723723#### 获取共享锁
0 commit comments