package uses;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class CacheDemo {
private Map<String,Object> cache=new HashMap<String,Object>();
private ReadWriteLock rwl=new ReentrantReadWriteLock();
public Object getData(String key)
{
rwl.readLock();//如果都是读的话 可以让他进去这段代码,所以上读锁
Object value=null;
try {
value=cache.get(key);
if(value==null)
{
rwl.readLock().unlock();//开始写的话,加写锁,释放读锁
rwl.writeLock().lock();
try {
if(value!=null)
{
value="aaaa";//实际是去数据库取数据
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
rwl.writeLock().unlock();
}
rwl.readLock().lock();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
rwl.readLock().unlock();
}
return value;
}
public static void main(String[] args) {
}
}
读写锁实现缓存系统demo
最新推荐文章于 2025-10-16 09:16:06 发布
本文介绍了一个使用Java实现的简单缓存系统案例,通过ReentrantReadWriteLock来管理读写操作,确保了并发访问时的数据一致性。当多个线程尝试访问同一数据时,通过读写锁机制有效协调了读操作和写操作。

400

被折叠的 条评论
为什么被折叠?



