beanDefinitionMap线程安全问题

来源:11-3 SpringIOC的应用

慕标4204065

2019-12-25

图片描述
请问老师,beanDefinitionMap已经是concurrentHashMap了 这里为什么还要加锁

写回答

1回答

翔仔

2019-12-26

同学好,我觉得还是需要根据上下文来理解,synchronized里面肯定不止是给beanDefinitionMap赋值这么简单,里面还包括了别的需要获取同步锁的操作,

// Cannot modify startup-time collection elements anymore (for stable iteration)
synchronized (this.beanDefinitionMap) {
   this.beanDefinitionMap.put(beanName, beanDefinition);
   List<String> updatedDefinitions = new ArrayList<>(this.beanDefinitionNames.size() + 1);
   updatedDefinitions.addAll(this.beanDefinitionNames);
   updatedDefinitions.add(beanName);
   this.beanDefinitionNames = updatedDefinitions;
   removeManualSingletonName(beanName);
}

把这些当做一个整体来操作,需要在线程安全的条件下进行

1
0

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程