需要对单身模式进行一些澄清

时间:2013-04-18 10:45:49

标签: design-patterns singleton

单独的设计模式是否确保单个对象引用或者在实现单例模式时有多于一个对象的机会/可能性,我认为在多线程的情况下有一个机会多于一个即使我们已经实现了单例模式。

请帮忙。

4 个答案:

答案 0 :(得分:3)

线程可能会导致单例出现问题。你可以在这里找到一套全面的单线程安全解决方案:

http://csharpindepth.com/Articles/General/Singleton.aspx

答案 1 :(得分:2)

单例模式是一种设计模式,它将类的实例化限制为一个对象。如果实例已存在,则只返回对该对象的引用。但是,在多线程环境中,2个单独的线程可能同时输入getInstance(),检查该实例是否为null,然后创建该类的2个实例。因此,为了防止它,您需要将getInstance()标记为synchronized,如下所示:

public static synchronized Singletone getInstance() {
    if(instance == null){
        instance = new createInstance();
    }
    return instance;
}

查看this帖子以便更好地理解。

答案 2 :(得分:0)

Singleton模式可确保在JVM上运行的应用程序中创建单个对象。即使在多线程环境中也是如此。如果没有,那不是Singleton或者至少编程不好的Singleton。

答案 3 :(得分:-1)

当你有单例类时,你不能创建该类的多个对象。您可以在该对象上创建许多引用,但对象将是相同的。