请问spring源码getSingleton中对ConcurrentHashMap加独占锁的意义是什么?

发布于 2022-09-12 02:01:58 字数 573 浏览 12 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

久伴你 2022-09-19 02:01:58

这不就是个单例模式嘛...和ConcurrentHashMap有什么关系

黑寡妇 2022-09-19 02:01:58

避免singletonObject多次生成,而不是控制对ConcurrentHashMap的操作,是控制对singletonFactory.getObject()的操作

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文