首页 > 代码库 > 设计一个缓存器 ReadLock提高性能

设计一个缓存器 ReadLock提高性能

/** *  * @描述: 设计一个缓存器 ReadLock提高性能. * @作者: Wnj . * @创建时间: 2017年5月16日 . * @版本: 1.0 . */public class CacheDemo {        private Map<String, Object> cache = new HashMap<String, Object>();        public static void main(String[] args) {            }        private ReadWriteLock rwl = new ReentrantReadWriteLock();        /**     * 检查是有对应key的数据,有则返回,没有则从DB中查询     * <功能详细描述>     * @param key     * @return     */    public Object getData(String key) {        //上读锁        rwl.readLock().lock();        Object value = null;        try {            value = cache.get(key);            if (value =http://www.mamicode.com/= null) {                //发现要写的时候,释放读锁,不让别人读了                rwl.readLock().unlock();                //上写锁,当有三个线程,第一个线程lock之后,其它线程就锁不了了,或者说等其它两个读(写)的线程,读(写)完,lock才能锁上去                rwl.writeLock().lock();                                //第之前一个写线程释放后,第二个线程获取写lock,要重新判断一下是否需要再写(读),具体可参考jdk文档                try {                    if (value =http://www.mamicode.com/= null) {                        value = "aaaa";//查询数据库存                    }                }                finally {                    //释放写锁                    rwl.writeLock().unlock();                }                //还原成读锁                rwl.readLock().lock();            }        }        finally {            rwl.readLock().unlock();        }        return value;    }}

 

设计一个缓存器 ReadLock提高性能