您的位置:首页 > 编程语言 > Java开发

标准缓存系统--JAVA读写锁的使用

2013-04-09 22:52 309 查看
package cn.itcast.heima2;

import java.util.HashMap;

import java.util.Map;

import java.util.concurrent.locks.ReadWriteLock;

import java.util.concurrent.locks.ReentrantReadWriteLock;

/**

* 多线程下的缓存系统<br>

* 高效率的缓存系统,防止多线程重复写操作

* @author RSun

* @Date 2013-4-5上午12:00:57

*/

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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: