面试题之线程的缓存系统
来源:互联网 发布:mac口红russian red 编辑:程序博客网 时间:2024/04/20 03:48
package cn.itcast.heima2;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
//缓存系统面试题 synchronized ReadWriteLock
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;
}
}
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
//缓存系统面试题 synchronized ReadWriteLock
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;
}
}
- 面试题之线程的缓存系统
- 线程面试题之二:子线程之间的同步
- 线程学习之面试题
- JAVA面试题之线程
- SSH框架之Hibernate的关于session缓存面试题
- 面试题之Android为什么是单线程的?
- 面试题之银行业务系统
- 面试题之交通管理系统
- 有关线程的面试题
- 关于线程的面试题
- 线程面试题之三:父子线程和子线程之间的同步与互斥
- 系统编程的面试题
- 黑马程序员--面试题之---交通管理系统
- 面试题之银行业务调度系统
- 面试题之------交通灯管理系统
- 面试题之------银行业务调度系统
- 面试题之交通灯管理系统
- Java面试题之交通灯管理系统
- 达不到预期
- gethostname()函数的用法
- Java乔晓松-httpURLConnection、URL、httpClient、httpPost、httpGet之代码详解篇
- WSAStartup()函数用法
- Mysql和Oracle数据库中的分页查询
- 面试题之线程的缓存系统
- VC++ 不重启Windows直接更改IP地址
- Android反编译APK文件
- ios20-录制音频(播放,停止,开始录制)
- OutputDebugString, NKDbgPrintfW
- miniLZO压缩库使用注意事项
- 心境修炼之一
- 心境修炼之二
- 三层架构入门