class="java">
?
?
使用ReadWriteLock的读写锁?实现?模拟缓存的?功能
?
?
package cn.zto.lock; import java.util.HashMap; import java.util.Map; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; //模仿缓存 public class CacheDateTest { ReadWriteLock rwl = new ReentrantReadWriteLock(); Map<Object, Object> map = new HashMap<Object, Object>(); public Object get(Object key){ rwl.readLock().lock(); Object value = null; boolean flag ; value = map.get(key); if (value == null) { flag = false; rwl.readLock().unlock(); rwl.writeLock().lock(); if (!flag) { value = " 初始化 "; map.put(key, value); flag = true; } rwl.writeLock().unlock(); rwl.readLock().lock(); } rwl.readLock().unlock(); return value; } }
?
?
?
?
?
?