使用readLock与writeLock实现缓存
锁妙用:
读写锁:分为读锁和写锁,多个读锁不能互斥,读锁与写锁互斥,写锁与写锁互斥,这是由JVM自己控制的,只要上好相应的锁即可,如果你的代码只读数据,可以多人同时读,但不能同时写,那就上读锁;如果要修改数据,只能有一个人在写,且不能同时读取,那就上写锁,总之,读的时候上读锁,写的时候上写锁.
如使用readLock与writeLock实现缓存
public class CacheDemo {private Map<String, Object> cache = new HashMap<String, Object>();private ReadWriteLock rwl = new ReentrantReadWriteLock();public Object getData(String key){rwl.readLock().lock();Object value = null;try{value = cache.get(key);if(value == null){rwl.readLock().unlock();rwl.writeLock().lock();try{if(value==null){value = "aaaa";// queryDB();}}finally{rwl.writeLock().unlock();}rwl.readLock().lock();}}finally{rwl.readLock().unlock();}return value;}}