读书人

单例模式小结

发布时间: 2012-09-17 12:06:51 作者: rapoo

单例模式总结

单例模式的使用有一个必要的条件,在一个系统要求一个类只有一个实例时才应当使用单例模式。

在懒汉式单例的时候为什么要进行线程的控制呢?

package 单例模式.懒汉模式;

public class LazySingleton {
?private static LazySingleton m_instance;
?private LazySingleton(){}
?synchronized public LazySingleton getInstance()
?{
??if(m_instance == null)
??{
???m_instance = new LazySingleton();
??}
??return m_instance;
?}
}
分析这个例子,如果在多线程的环境中,A和B同时调用该方法,A进入到?if(m_instance == null)然后开始new LazySingleton();的时候,B开始到if(m_instance == null)发现对象也是NULL,那么B也开始产生对象。这样产生了多个实例。所以要在方法的开始加上线程控制,这样就保证A和B不会同时产生实例。

读书人网 >软件架构设计

热点推荐