// 判断是否有缓存
if (cached) {
// 直接返回缓存内容
return cachedValue;
}
// 开始同步
synchronized (lock) {
// 再次判断,避免在等待同步锁的过程中,别人已经先行一步读取了DB
if (isThisTimeCached) {
return cached;
}
// 读取DB
readDB();
// 存入cache
saveCache();
return cached;
}