缓存代理
来源:互联网 发布:java web开发案例精粹 编辑:程序博客网 时间:2024/06/08 07:37
User$Proxy extends User{
private Integer id;
User realUser=null;
getName(){
if(realUser==null){
realUser.session.get(i)
if(realUser==null) throw Exception
}
return realUser.getName();
}
}
-------
//j2se api中ReentrantReadWriteLock类的示例,下面的代码展示了如何利用重入来执行升级缓存后的锁降级
class CachedData {
Object data;volatile boolean cacheValid;
ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();
void processCachedData() {
rwl.readLock().lock();
if (!cacheValid) {
// Must release read lock before acquiring write lock
rwl.readLock().unlock();
rwl.writeLock().lock();
// Recheck state because another thread might have acquired
// write lock and changed state before we did.
if (!cacheValid) {
data = ...
cacheValid = true;
}
// Downgrade by acquiring read lock before releasing write lock
rwl.readLock().lock();
rwl.writeLock().unlock(); // Unlock write, still hold read
}
use(data);
rwl.readLock().unlock();
}
}
-----------------------------------------------
public class CacheDemo//缓存
{
private Map<String,Object> cache=new HashMap<String,Object>();
ReadWriteLock rwl=new ReentrantReadWriteLock();
public void process(String key){
rwl.readLock().lock();
Object value=null;
try
{
value=cache.get(key);
if(value==null){
rwl.readLock().unlock();
rwl.writeLock().lock();
if(value==null){
value="aaa";//queryDB 去数据库中查询
if(value!=null){
cache.put(key,value);
}
}
try
{
rwl.writeLock().unlock();
}
catch (Exception e)
{
e.printStackTrace();
}finally{
rwl.writeLock().unlock();
}
rwl.readLock().lock();
}
}
catch (Exception e)
{
e.printStackTrace();
}finally{
rwl.readLock().unlock();
}
}
}
- 缓存代理
- 流媒体代理缓存技术研究
- 缓存的代理Bean
- 反向代理缓存
- 反向代理缓存
- squid 代理缓存服务器
- nginx缓存代理
- nginx 代理缓存配置
- Nginx - 代理、缓存
- Nginx - 代理、缓存
- Nginx 代理缓存
- 反向代理缓存
- NGINX反向代理缓存
- 分布式缓存和代理
- js缓存代理
- 代理缓存服务-squid
- squid代理缓存服务器
- Squid(代理缓存服务器)
- Android手机访问Django测试服务器方法
- 硬件工程师的系统开发之路
- 通过一个例子学习stringstream
- Ubuntu常用命令
- 从明源动力到创新工场这一路走来
- 缓存代理
- CRM上线之路 走上了CRM实施顾问-第104天上班 -第21周
- FWNX-creates a linked list of all the nodes at each depth-JAVA VERSION
- Peterson算法
- SSH整合(二)-Spring整合Hibernate
- Lamport面包店算法
- 临界区
- 2013年度总结
- SMP