Skip to content

Commit 1cee06d

Browse files
committed
Update a-thread-safe-implementation-of-lru-cache.md
1 parent 8e70d38 commit 1cee06d

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

docs/java/java-programming-problem/a-thread-safe-implementation-of-lru-cache.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@ public interface ReadWriteLock {
6868

6969
`ReentrantReadWriteLock``ReadWriteLock`接口的具体实现类。
7070

71-
**读写锁还是比较适合缓存这种读多写少的场景。读写锁可以保证多个线程和同时读取,但是只有一个线程可以写入。但是,有一个问题是当读锁被线程持有的时候,读锁是无法被其它线程申请的,会处于阻塞状态,直至读锁被释放。**
71+
**读写锁还是比较适合缓存这种读多写少的场景。读写锁可以保证多个线程和同时读取,但是只有一个线程可以写入。**
72+
73+
读写锁的特点是:写锁和写锁互斥,读锁和写锁互斥,读锁之间不互斥。也就说:同一时刻允许多个线程对共享资源进行读操作;同一时刻只允许一个线程对共享资源进行写操作;当进行写操作时,同一时刻其他线程的读操作会被阻塞;当进行读操作时,同一时刻所有线程的写操作会被阻塞。
7274

7375
另外,**同一个线程持有写锁时是可以申请读锁,但是持有读锁的情况下不可以申请写锁。**
7476

0 commit comments

Comments
 (0)