请问spring源码getSingleton中对ConcurrentHashMap加独占锁的意义是什么?
private final Map<String, Object> singletonObjects = new ConcurrentHashMap<String, Object>(64);
protected Object getSingleton(String beanName, boolean allowEarlyReference) {
Object singletonObject = this.singletonObjects.get(beanName);
if (singletonObject == null && isSingletonCurrentlyInCreation(beanName)) {
synchronized (this.singletonObjects) {
singletonObject = this.earlySingletonObjects.get(beanName);
这里singletonObjects已经是线程安全的Map集合了,再对其加synchronized的意义何在,希望有大神可以详细讲解
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这不就是个单例模式嘛...和
ConcurrentHashMap
有什么关系避免
singletonObject
多次生成,而不是控制对ConcurrentHashMap
的操作,是控制对singletonFactory.getObject()
的操作