以下方式均不推荐开发使用,仅供学习
package singleton;
/**
* 饿汉式(静态常量)
*/
public class Singleton_1 {
// 1. 私有化构造器
private Singleton_1() {}
// 2. 本类内部创建静态常量型实例
private final static Singleton_1 instance = new Singleton_1();
// 3. 对外提供公有的获取实例方法
public static Singleton_1 getInstance() {
return instance;
}
}
package singleton;
/**
* 饿汉式(静态代码块)
*/
public class Singleton_2 {
// 1. 私有化构造器
private Singleton_2() {}
// 2. 静态变量
private static Singleton_2 instance;
static {
instance = new Singleton_2();
}
// 3. 对外提供公有的获取实例方法
public static Singleton_2 getInstance() {
return instance;
}
}
优点
- 实现简单,避免了线程同步问题
缺点
- 在类装载时就完成了实例化,达不到懒加载(lazy loding)的效果,如果这个类从始至终都没有使用过,将会造成内存浪费
网友评论