饿汉式 — 在类被加载进内存的时候就创建
public class Car {
public static final Car car = new Car();
private Car() {
//2. 构造函数私有化
}
//3.提供一个全局的静态方法
public static final Car getCar() {
return car;
}
懒汉式 — 在需要使用的时候才实例化
public class Car {
private volatile static Car car;
private Car() {
//构造方法私有化
}
//提供一个全局的静态方法
public static Car getCar() {
if (car == null) {
car = new Car();
}
return car;
}
优化版 — 解决了懒汉的多线程问题 和资源浪费
public class Car {
private static Car car;
//构造函数私有化
private Car() {
}
//提供一个全局的静态方法
public static Car getCar() {
if (car == null) {
synchronized (Car.class) {
if (car == null) {
car = new Car();
}
}
}
return car;
}
}