java多线程:9、读写锁实现Cache

class CacheDemo{

    Map map=new HashMap();

    private ReadWriteLock rwl=new ReentrantReadWriteLock();
    public Object getDate(String key){
        rwl.readLock().lock();
        Object data=null;
        try{
            data=map.get(key);
            if(data==null){
                try{
                    rwl.readLock().unlock();
                    rwl.writeLock().lock();
                    if(data==null){
                        data="查询数据库";
                    }
                }finally {
                    /**
                     * 降级锁
                     */
                    rwl.readLock().lock();
                    rwl.writeLock().unlock();
                }

            }
        }finally{
            rwl.readLock().unlock();
        }


        return data;
    }
}

你可能感兴趣的:(多线程)