1.饿汉式单例:在初始化内存时就会生成一个对象,需要调用对象时将它返回出去
2.懒汉式单例:在初始化时不会加载对象,在调用方法时才会生成一个对象,并将它返回出去
package study02;
public class Singleton {
//饿汉式单例,在初始化内存时加载到内存中,即使不用他也会占用内存但是线程安全
private static final Singleton SINGLETON= new Singleton();
//将构造方法设置为private,防止外部调用
private Singleton() {
}
public static Singleton getSingleton(){
return SINGLETON;
}
}
package study02;
public class Singleton2 {
//在初始化时不生成静态对象
private static Singleton2 SINGLETON_2;
//将构造方法设置为private,防止外部调用
private Singleton2(){}
//懒汉式单例,在调用方法时再生成对象,它不调用时不占用内存空间,但是线程不安全
public static Singleton2 getSingleton2(){
if (SINGLETON_2==null){
SINGLETON_2 = new Singleton2();
}
return SINGLETON_2;
}
}