记一次单例模式的使用,在开发的过程中,我们常常会遇到一个对象只要创建一次,当然就是我们的spring了,他的bean默认就是单例模式,有些朋友们就会疑惑,为啥要单例? 省内存!内存是非常宝贵的资源,可为了省内存,单例会出现线程安全的问题,这就需要开发者们时刻注意了!
1.饿汉式创建
public class Singleton1 {
public static Singleton1 singleton1 = new Singleton1();
private Singleton1() {
}
public static Singleton1 getSingleton1() {
return singleton1;
}
public static void main(String[] args) {
System.out.println(getSingleton1());
System.out.println(getSingleton1());
}
}
简单,粗暴,直接new出实例
2.懒汉式创建
public class Singleton2 {
public static Singleton2 singleton2 = null;
private Singleton2() {
}
public static Singleton2 getSingleton2() {
if (singleton2 == null) {
synchronized (Singleton2.class) {
if (singleton2 == null) {
singleton2 = new Singleton2();
}
}
}
return singleton2;
}
public static void main(String[] args) {
System.out.println(getSingleton2());
System.out.println(getSingleton2());
}
}
需要时创建,可以节省内存的使用,采用双if保证创建的为一个对象,很多朋友们不懂外面这个if的含义,下面用模型来模拟