- public class ReadWriteLockCacheDemo {
- private Map<String,Object> cache = new HashMap<String, Object>();
- private ReadWriteLock rwl = new ReentrantReadWriteLock();
- public static void main(String[] args)
- {
- }
-
- public void getData(String key)
- {
- //与懒汉模式有点相似。。。加了读写锁而已..可以理解为AB锁不?有多大区别。。
- Object value=null;
- try
- {
- rwl.readLock().lock();
- value = cache.get(key);
- if(value==null)
- {
- rwl.readLock().unlock();
- try
- {
- rwl.writeLock().lock();
- if(value==null)
- value = "request SQL";
- }
- finally
- {
- rwl.writeLock().unlock();
- }
- rwl.readLock().lock();
- }
- }
- finally
- {
- rwl.readLock().unlock();
- }
-
- }
- }
复制代码 |
|