//懒汉式单例模式
public class MySingleton {
//设立静态变量
private static MySingleton mySingleton = null;
private MySingleton(){
}
//开放一个公有方法,判断是否已经存在实例,有返回,没有新建一个在返回
public static MySingleton getInstance(){
if(mySingleton == null){
mySingleton = new MySingleton();
}
return mySingleton;
}
}
//饿汉式单例模式
public class MySingleton{
//设立静态变量,直接创建实例
private static MySingleton mySingleton = new MySingleton();
private MySingleton(){
}
//开放一个公有方法,判断是否已经存在实例,有返回,没有新建一个在返回
public static MySingleton getInstance(){
return mySingleton;
}
}
饿汉式每次调用的时候不用做创建,直接返回已经创建好的实例。这样虽然节省了时间,但是却占用了空间,实例本身为static的,会一直在内存中带着。
懒汉式则是判断,在用的时候才加载,会影响程序的速度。最关键的是,在并发的情况下,懒汉式是不安全的。如果两个线程,我们称它们为线程1和线程2,在同一时间调用getInstance()方法,如果线程1先进入if块,然后线程2进行控制,那么就会有两个实例被创建。