ReadWriteLock读写分离锁可以有效地减少锁竞争,以提升系统性能。
比如线程A1,A2,A3进行写操作,B1,B2,B3进行读操作。如果使用重入锁(ReenTrantLock)或内部锁(Synchronized),则所有的读之间,读与写之间,写与写之间都是串行的。由于读操作并不对数据的完整性造成破坏,所以这种等待其实是不合理的。因此,就有了读写分离锁。
读写锁允许多个线程同时读,使得B1,B2,B3可以真正地并行。但是考虑到数据的完整性,写写操作之间和读写操作之间任然需要互相等待和持有锁。
| 读 | 写 | |
|---|---|---|
| 读 | 非阻塞 | 阻塞 |
| 写 | 阻塞 |

ReadWriteLock通过读写分离,允许多个线程并行读取,减少了锁竞争,提升了系统性能。在读操作远超写操作的情景下,效果显著,例如在测试中,使用ReadWriteLock耗时约2秒,而使用重入锁则耗时约20秒。
最低0.47元/天 解锁文章
519

被折叠的 条评论
为什么被折叠?



