什么是读写锁
- 基本原则:(读读不互斥、读写互斥、写写互斥)
- 允许多个线程同时读共享变量;
- 只允许一个线程写共享变量;
- 如果一个写线程正在执行写操作,此时禁止读线程读共享变量。
- 读写锁与互斥锁的一个重要区别
- 读写锁允许多个线程同时读共享变量,互斥锁不允许,因此读写锁在读多写少的情况下优于互斥锁;但读写锁的写操作是互斥的,当一个线程在写共享变量的时候,是不允许其他线程执行写操作和读操作。
快速实现一个缓存(用 ReadWriteLock 快速实现一个通用的缓存工具类。)
使用缓存首先要解决缓存数据的初始化问题
- 一次性加载:适合源头数据数据量不大的情况,只需在应用启动时把源头数据查询出来,依次put()就可以了
- 按需加载/懒加载:适合数据量非常大的情况,只有当应用查询缓存,缓存中没有所需数据时,才触发加载源头相关数据进入缓存