读写锁是,加了读锁,读数据可以随意读取,加了写锁的话,在写锁未释放之前,其他线程不可以进行操作
下例子:
缓存技术的示例
当chtch中的value中没有值,就往里边添加数据,如果有责不添加
在读写过程中,如果是读数据,可以随意读取,如果写数据的话只允许第一个写
利用读写所处理再好不过了
public class CatchDemoTest {
private ReadWriteLock rwl = new ReentrantReadWriteLock();
Map<String,Object> chatch = new HashMap<String, Object>();
public Object getValue(String key){
Object value = null;
rwl.readLock().lock();
try{
value = chatch.get(key);
if(value==null){
rwl.readLock().unlock();
rwl.writeLock().lock();
try{
if(value==null){
value = "aa";
}
}finally{
rwl.writeLock().unlock();
}
}
}finally{
rwl.readLock().unlock();
}
return value;
}
}