1饿汉式
- 类初始化时,直接加载
-
public class SingletonDemo1 { //饿汉式 //类初始化时,会立即加载该对象 private static SingletonDemo1 singletonDemo1 = new SingletonDemo1(); private SingletonDemo1(){} public static SingletonDemo1 getInstance(){ return singletonDemo1; } public static void main(String[] args) { SingletonDemo1 a = SingletonDemo1.getInstance(); System.out.println(a); SingletonDemo1 b = SingletonDemo1.getInstance(); System.out.println(b); System.out.println(a == b); } }
2懒汉式
- 类初始化,不直接加载,调用时再加载
-
public class SingletonDemo2 { //懒汉式 //初始化时不加载,调用的时候才加载 private static SingletonDemo2 singletonDemo2; private SingletonDemo2(){} public static SingletonDemo2 getInstance(){ if(singletonDemo2 == null){ singletonDemo2 = new SingletonDemo2(); } return singletonDemo2; } public static void main(String[] args) { SingletonDemo2 a = SingletonDemo2.getInstance(); System.out.println(a); SingletonDemo2 b = SingletonDemo2.getInstance(); System.out.println(b); System.out.println(a == b); } }