什么是单例模式
保证内存中只有一个实例(对象)。
饿汉式
类加载到内存后,就实例化一个单例
示例代码
public class Singleton01 {
// 方式1
private static final Singleton01 INSTANCE = new Singleton01();
// //方式2
// private static final Singleton01 INSTANCE;
// static {
// INSTANCE = new Singleton01();
// }
private Singleton01(){
}
public static Singleton01 getInstance() {
return INSTANCE;
}
public static void main(String[] args) {
Singleton01 s1 = Singleton01.getInstance();
Singleton01 s2 = Singleton01.getInstance();
System.out.println(s1 == s2);
}
}
- 问题
不管用到与否,类加载时就完成了实例化,可能造成资源浪费;
懒汉式
只有在使用类时加载,达到了按需加载。但在多线程情况下,可能发生问题。
示例代码
public class Singleton02 {
private static Singleton02 INSTANCE;
private Singleton02() {
}
public static Singleton02 getInstance(