import java.util.HashMap;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class MyCache {
private Map<String,Object> map = new HashMap<String, Object>();
private ReadWriteLock rwl = new ReentrantReadWriteLock();
/**
* 往缓存中放数据放一段时间
* @param key
* @param value
* @param mill
*/
public void put(final String key,Object value,long mill){
map.put(key, value);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
map.remove(key);
}
}, mill);
}
/**
* 从缓存中拿,如果数据过期,模拟去数据库中取数据
* @param key
* @return
*/
public Object get(String key){
Object result = null;
rwl.readLock().lock();
try{
result = map.get(key);
if(result == null){
rwl.readLock().unlock();
rwl.writeLock().lock();
try{
if(result == null){
result = new Object(); //如果缓存中没有去数据库取
}
}finally{
rwl.writeLock().unlock();
}
rwl.readLock().lock();
}
}finally{
rwl.readLock().unlock();
}
return result;
}
}
java做一个缓存类(应用TimerTask和ReadWriteLock)
最新推荐文章于 2022-06-04 19:34:55 发布
本文将介绍如何使用Java编程语言构建一个缓存类,该类巧妙地结合了`TimerTask`进行定时更新以及`ReadWriteLock`确保并发访问的安全性。通过这种方式,我们可以创建一个高效且线程安全的缓存解决方案。
摘要由CSDN通过智能技术生成