单例模式中的懒汉式与饿汉式
单例模式(singleton Pattern) 是java中最简单的设计模式之一。这个模式涉及单一的类,确保只有单个对象被创建。
也就是说程序执行从前到后只有一个对象。
1、饿汉式:
饿汉模式:就是当类被加载,单例的初始化就已经完成了;无论是否getInstance,都会实例化单例,创建对象。
public class Singleton {
//饿汉模式
private static Singleton singleton = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return singleton;
}
}
2、懒汉式
懒汉模式:顾名思义它比较懒,只有在调用getInstance的时候,才会实例化单例,创建对象。
public class Singleton {
//懒汉模式
private static Singleton singleton;
private Singleton(){}
public static Singleton getInstance(){
if(singleton==null){
singleton = new Singleton();
}
return singleton;
}
}
饿汉模式本身就是线程安全的,可以直接用于多线程。
而懒汉模式本身是线程不安全的。