真实面试题目,问:Spring 那级缓存用到了 ConcurrentHashMap?
org.springframework.boot 2.7.10版本
private final Map<String, Object> singletonObjects = new ConcurrentHashMap(256);
private final Map<String, ObjectFactory<?>> singletonFactories = new HashMap(16);
private final Map<String, Object> earlySingletonObjects = new ConcurrentHashMap(16);
老版本 earlySingletonObjects 使用的是 HashMap
新版本的变化之处:
1:在加锁之前和加锁之后都有两层是否为空的判断,老版本只有一层判断
2:allowEarlyReference 的判断提到 synchronized 外面了