java - 带对象锁的单例模式

标签 java singleton

我正在尝试为下面的类实现Singleton模式。我在任何时候在 JVM 中都应该只有 SingletonClass 类的单个实例。

下面的代码满足单例模式吗?请提出您的建议。

public class SingletonClass {

    private static SingletonClass cache = null;
    private static final Object LOCK = new Object();


    // creates one single instance of the class
    public static SingletonClass getInstance() {
        if (cache == null) {
            synchronized (LOCK) {
                if (cache == null) {
                    cache = new SingletonClass();
                }
            }
        }

        return cache;
    }

    public static void main(String[] args) {

        SingletonClass.getInstance();
    }
}

最佳答案

有一篇关于实现单例模式的不同方法的好文章,包括您的方法: Reg's Tech article about Singleton

正如文章中提到的,您应该(如果您希望模式 100% 线程安全)还将 SingletonClass 字段声明为 volatile 的。另外,您不需要对象作为锁。只需使用synchronized(SingletonClass.class)

关于java - 带对象锁的单例模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35986218/

相关文章:

java - 将附加参数传递给 HTTP @DELETE 方法的正确方法是什么

iphone - 如何在应用程序中间重新初始化我无法完全控制的单例?

angular - 单实例 Angular 2+ 通知服务/错误处理程序

c++ - 如何处理单例?

java - ElasticSearch 为什么在客户端或节点上调用 close()?

java - 我如何在 Swing 中捕获此异常?

java - 从 MongoDB 存储和获取文档

java - 正则表达式匹配多个表达式?

java - 单例和公共(public)静态变量Java

java - 如果单例 block 中的内部静态可运行对象用作可调用对象的包装器,如果它修改单例的静态参数,它会吗?