Java并发ReadWriteLock
一.简介
读多写少场景,实际工作中,为了优化性能,我们经常会使用缓存,例如缓存元数据、缓存基础数据等,这就是一种典型的读多写少应用场景,缓存之所以能提升性能,一个重要的条件就是缓存的数据一定是读多写少的,例如元数据和基础数据基本上不会发生变化(写少),使用它们的地方却很多(读多)。
针对这种场景,Java SDK并发包提供了读写锁——ReadWriteLock,非常容易使用,并且性能很好。
二.读写锁
- 允许多个线程同时读共享变量;
- 只允许一个线程写共享变量;
- 如果一个写线程正在执行写操作,此时禁止读线程读共享变量。
读写锁与互斥锁的一个重要区别,读写锁允许多个线程同时读共享变量,而互斥锁不允许。这是读写锁在读多写少的场景性能优于互斥锁的关键。
三.示例-缓存
声明CacheTest对象,HashMap是线程不安全,使用ReadWriteLock来保证线程安全,ReadWriteLock是一个接口,它的实现类是ReentrantRea