红星美凯龙建设事业中心网站,中企动力做的网站怎么登陆,17网站一起做网店新塘,上海市建设咨询协会网站在加载缓存时#xff0c;使用双重检查锁定机制#xff0c;它可以完美缓存的懒加载 第一次检查#xff0c;是为了快速判断缓存Map是否被初始化。 第二次检查是因为#xff0c;第一次检查可能有多个线程都进入了if和 synchronized之间#xff0c;但只有一个线程可以获取锁进…在加载缓存时使用双重检查锁定机制它可以完美缓存的懒加载 第一次检查是为了快速判断缓存Map是否被初始化。 第二次检查是因为第一次检查可能有多个线程都进入了if和 synchronized之间但只有一个线程可以获取锁进入到同步代码块当第一个获取锁的线程缓存了Map释放锁时第二重检查可以防止其他进入了if和 synchronized之间的线程再次加载一次缓存Map。
import java.util.HashMap;
import java.util.Map;public class LazyLoadedMap {private static volatile MapString, String busTypeNoAndAcquRulesMap; //缓存Mapprivate static final Object busTypeLock new Object(); // 缓存的锁对象public static MapString, String getMap() {if (busTypeNoAndAcquRulesMap null) { // 第一次检查synchronized (busTypeLock) { // 使用锁对象if (busTypeNoAndAcquRulesMap null) { // 第二次检查busTypeNoAndAcquRulesMap new HashMap(); // 进行初始化}}}return busTypeNoAndAcquRulesMap;}
}