设计模式之单例模式一(懒汉式)

单例模式:

只保证对象的一个实例,这样可以节约内存,防止对资源的多重占用,设置全局访问点,严格控制访问。但是由于没有接口,所以扩展起来相对麻烦。

下面是单例模式的一种实现方式(懒汉式):

上面这种单例模式的实现是存在问题的,上面是在多线程中,其实现是非线程安全的,采用多线程debug的方式,设置如上所示的断点,当线程一执行完判断lazySingleton对象是否为空后,认为干预执行线程二,也进行是否为空的判断,此时这两个判断都是成立的,这样会构建两个实例,与单例模式向背。

下面是采用同步方法实现的线程安全:

同样经过多线程debug人工干预程序的运行,此时不会出现创建两个对象的情况。此方式采用类的同步锁,非常耗费资源,性能不好。

猜你喜欢

转载自blog.csdn.net/Wenlong_L/article/details/82763358