单例模式,只有单个实例的意思。一般用于只需要有一个实例存在的时候,防止new好多个对象,保证在内存中只有一个实例存在。
饿汉式单例
类加载到内存后,就实例化一个单例,JVM保证线程安全
唯一缺点:不管用到与否,类装载时就完成实例化
public class Singleton {
private static Singleton singleton = new Singleton();
//防止new对象
private Singleton(){}
public static Singleton getInstance(){
return singleton;
}
public static void main(String[] args) {
Singleton singleton1 = Singleton.getInstance();
}
}
懒汉式单例
需要时,才new对象。但多线程访问时会出现问题。
public class Singleton {
private static Singleton singleton;
//防止new对象
private Singleton(){}
public static Singleton getInstance(){
if(singleton == null){
singleton = new Singleton();
}
return singleton;
}
public static void main(String[] args) {
Singleton.getInstance();
}
}