继续上一篇 饿汉式单例模式
为了解决饿汉式单例模式,带来的内存占用问题 ,于是就出现了懒汉式单例的写法,懒汉式单例模式的特点是,单例对象要在被使用时才会初始化,下面看懒汉式单例模式的简单实现。
懒汉单例,在测试时可以将断点打在创建懒汉单例处。
public class LazySimpleSingleton {
private static LazySimpleSingleton lazySimpleSingleton = null;
private LazySimpleSingleton() {};
//懒汉式单例,使用时才实例化
//但是存在线程安全问题,多个线程同时调用可能出现两个实例
public static LazySimpleSingleton getInstance() {
if(lazySimpleSingleton == null) {
lazySimpleSingleton = new LazySimpleSingleton();//断点位置模拟CUP执行顺利
}
return lazySimpleSingleton;
}
}
线程类,创建多线程,模拟线程安全问题。
public class MyThread implements Runnable{
public void run() {
LazySimpleSingleton lazy = LazySimpleSingleton.getInstance();
System.out.println("lazy:" + lazy);
}
}
测