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); }
把这些当做一个整体来操作,需要在线程安全的条件下进行
10
相似问题