单例设计模式是否确保一个对象引用或者在实现单例模式时有任何机会/可能性超过一个对象的引用,我认为在多线程的情况下,即使我们也有可能超过一个对象已经实现了单例模式。
请帮忙。
单例设计模式是否确保一个对象引用或者在实现单例模式时有任何机会/可能性超过一个对象的引用,我认为在多线程的情况下,即使我们也有可能超过一个对象已经实现了单例模式。
请帮忙。
线程可能会导致单例出现问题。您可以在此处找到一套使单例线程安全的综合解决方案:
单例模式是一种将类的实例化限制为一个对象的设计模式。如果一个实例已经存在,它只返回一个对该对象的引用。但是,在多线程环境中,可能有 2 个单独的线程getInstance()
同时进入,检查该实例是否存在null
,然后创建该类的 2 个实例。因此,为了防止它,您需要将您的标记getInstance()
为synchronized
:
public static synchronized Singletone getInstance() {
if(instance == null){
instance = new createInstance();
}
return instance;
}
查看这篇文章以获得更好的理解。
单例模式确保在 JVM 上运行的应用程序中创建单个对象。即使在多线程环境中也是如此。如果不是,那不是单例,或者至少不是编程不好的单例。
当您有单例类时,您不能创建该类的多个对象。您可以在该对象上创建许多引用,但对象将是相同的。