java - 在抽象类中同步静态方法

标签 java multithreading singleton

假设我有一个单例类

        abstract class Foo {
           private static Foo instance;

           public static synchronized Foo getInstance() {
            if(instance == null) {
               instance = new FooImpl(); 
            }

            return instance;
           }
        }

此方法是否锁定在 Class 对象上?抽象类甚至有类对象吗?

最佳答案

如果您的 getInstance 方法是代码中的非静态方法,您需要在 Foo 的实例上调用它,该实例将是一个非抽象子类同步方法的监视器对象就是那个实例。

如果让它同步,它将锁定抽象类的类对象。

您可以在 Java language specification 17.1 中找到详细信息

关于java - 在抽象类中同步静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46272032/

相关文章:

ios - 使用单例调用类方法中的实例方法

java - 如何更改 JTable 背景颜色默认为白色?

java - 我们应该始终在 JBoss 应用程序的客户端关闭 javax.naming.InitialContext 吗?

java - 如何创建一个搜索方法来搜索与所有其他条目名称完全匹配的名称

java - 同步新的读取和内存屏障

java - 如果线程本身不请求锁,它可以更改 java 锁定的对象数据吗?

java - 线程中出现异常 "Thread-10"java.lang.IllegalStateException

c++ - 初始化C++ 11风格的单例

java - 将 Karate 与 Selenium 联系起来

java - spring容器的垃圾收集