写一个缓存系统的伪代码

来源:互联网 发布:网络错误图片 编辑:程序博客网 时间:2024/05/16 05:25
import java.util.HashMap;import java.util.Map;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;public class CatchDemo {private Map<String, Object> cache = new HashMap<String, Object>();public static void main(String[] args) {}//ReadWriteLock//读锁与读锁不互斥,读锁与写锁,写所欲写锁互斥// 线程安全// 向数据库查询数据时,先查缓存系统,若有,则返回    //    若没有,则从数据库查询数据写入缓存,再读取private ReadWriteLock rwl = new ReentrantReadWriteLock();public /* synchronized */ Object getData(String key) {rwl.readLock().unlock();Object obj = null;try {obj = cache.get(key);if (obj == null) {rwl.readLock().unlock();rwl.writeLock().lock();try {if(obj == null)obj = "aaa";// 实际上是queryDB} finally {rwl.writeLock().unlock();}rwl.readLock().lock();}} catch (Exception e) {e.printStackTrace();} finally {rwl.readLock().unlock();}return obj;}}

0 0