ReadWriteLock是读写分离锁,它可以有效的帮助减少锁竞争,提升系统性能。比如线程A1、A2、A3进行写操作,线程B1、B2、B3进行读操作,如果使用synchronized或重入锁,理论上所有读读、读写、写写之间都是串行的。当B1进行读取时,B2、B3需要等待锁,由于读操作并不会影响数据完整性,这种等待并不合理,此时就可以使用读写锁来解决。
ReadWriteLock方法定义
读写锁允许多个线程同时读,线程B1、B2、B3可以并行操作。由于写操作会影响数据完整性,写写和读写操作还是需要互相等待和持有锁的。
读写锁的约束关系:
读读不互斥:读读之间不阻塞。
读写互斥:读阻塞写,写也会阻塞读。
写写互斥:写写阻塞。
如果系统中的读操作次数远远大于写操作,则读写锁就可以发挥最大作用,从而提升性能。
ReadWriteLock示例
ReadWriteLock示例
--参考文献《实战Java高并发程序设计》