概念:单例模式是Java的一种设计模式,一个类在运行期间始终保持一个实例对象,对象由该类自己负责创建。
实现:
1、饿汉式
类加载时就初始化对象,基于classLoader机制避免了多线程同步问题,线程安全。
public class SingleClass {
private static SingleClass instance = new SingleClass();
private SingleClass(){
}
public static SingleClass getInstance() {
return instance;
}
}
2、懒汉式
与饿汉式相比,在使用时才初始化对象,减少了内存浪费,但是涉及多线程调用时需要注意同步问题。
public class SingleClass {
private static SingleClass instance;
private SingleClass(){
}
public static synchronized SingleClass getInstance() {
if(instance == null){
instance = new SingleClass();
}
return instance;
}
}
双重校验锁(较synchronized效率较高)
public class SingleClass {
private volatile static SingleClass instance;
private SingleClass(){
}
public static SingleClass getInstance() {
if(instance == null){
synchronized (SingleClass.class){
if(instance == null){
instance = new SingleClass();
}
}
}
return instance;
}
}
3、静态内部类
同样利用classLoader来保证实例的唯一性,同时还能达到懒加载效果,实现简单。
public class SingleClass {
private static class Inner {
private static final SingleClass instance = new SingleClass();
}
private SingleClass(){
}
public static SingleClass getInstance() {
return Inner.instance;
}
}
4、枚举
简洁、方便,同时线程安全。
public enum SingleClass {
INSTANCE;
}



