//单例之饿汉式 反应速度,时间快
public class Hungry {
//私有化构造方法 保证唯一
private Hungry() {
}
//直接加载对象 指向自己实例的私有静态引用
private final static Hungry hungry = new Hungry();
//提供对外的方法 以自己实例为返回值的静态的公有方法
public static Hungry getInstance() {
return hungry;
}
}
//单例之懒汉式 资源利用效率高
public class LazyMan {
//私有化构造方法
private LazyMan(){
}
//不直接创建实例 volatile防止指令重排
private volatile static LazyMan lazyMan;
//提供返回值为自己实例的公开静态方法
public static LazyMan getInstance(){
//双重检测锁模式 DCL
//只有第一次创建实例时进入同步块,之后每次直接return
if (lazyMan==null){
//synchronized修饰的代码块比一般代码段慢几倍
synchronized (LazyMan.class){
//多线程下,当一个线程创建一个实例之后,singleton就不再为空了,后续的线程做第二次 非空检查,防止创建多个实例
if (lazyMan==null){
lazyMan=new LazyMan();
}
}
}
return lazyMan;
}
}



