缓存的写法 利用读写锁

public class CacheDemo {

 

         private Map<String, Object> cache = new HashMap<String, Object>();

         public static void main(String[] args) {

                   // TODO Auto-generated method stub

 

         }

 

         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;

         }

}

 

posted @ 2014-09-05 08:48  mxyhws  阅读(136)  评论(0)    收藏  举报