一个线程安全的缓存类简单实现:
import java.util.HashMap; import java.util.Map; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; public class Cache { private Map<String, Object> cacheData = new HashMap<String, Object>(); private ReadWriteLock rwlock = new ReentrantReadWriteLock(); public Object get(String key) { rwlock.readLock().lock(); Object value = cacheData.get(key); try { if(value == null) { rwlock.readLock().unlock(); rwlock.writeLock().lock(); try { if(null == (value = cacheData.get(key))) { value = ""; //获取实际数据 cacheData.put(key, value); } } finally { rwlock.writeLock().unlock(); } rwlock.readLock().lock(); } } finally { rwlock.readLock().unlock(); } return value; } }