class Bank {
private static Bank instance = new Bank();
private Bank() {
}
public static Bank getInstance() {
return instance;
}
}
特点
立即创建对象
线程安全
使用场景
java.lang.Runtime
windows 任务管理器、回收站
数据库连接池
(2) 懒汉式
不考虑线程问题
class Bank {
private static Bank instance = null;
private Bank() {
}
public static Bank getInstance() {
if (instance == null) {
instance = new Bank();
}
return instance;
}
}
线程安全
class Bank {
// 指令重排
private static volatile Bank instance = null;
private Bank() {
}
public static Bank getInstance() {
if (instance == null) {
synchronized (Bank.class) {
if (instance == null) {
instance = new Bank();
}
}
}
return instance;
}
}
特点
获取对象的时候创建对象
实现步骤(3步)
1. 构造器私有化
2. 创建当前类的实例,定义为静态变量。
(封装性体现:设为私有)
3. 提供静态的get方法
其他实现方式
枚举类实现饿汉式
jdk5.0之前
public class Bank {
public static final Bank instance = new Bank();
private Bank() {
}
}