懒汉式-双重核验:
package com.zzf.concurrence.singleinstance;
/**
* 懒汉式-双重核验
* @author zzf
*
*/
public class SingleEHan {
private SingleEHan() {}
private static volatile SingleEHan instance=null;
private static SingleEHan getInstance() {
if(instance==null) {
synchronized (SingleEHan.class) {
if(instance==null) //再一次校验,是因为多线程情况下,如果 SingleEHan 内容比例多未完全初始完,防止多次new
instance =new SingleEHan();
}
}
return instance;
}
}
懒汉式-类初始化模式
package com.zzf.concurrence.singleinstance;
/**
* 懒汉式-类初始化模式
*
* @author zzf
*
*/
public class SingleInstance {
private SingleInstance() {
}
private static class InstanceHolder {
public static SingleInstance instance = new SingleInstance();
}
public static SingleInstance getInstance() {
return InstanceHolder.instance;
}
}
饿汉式:
public class SingleEHan {
public static SingleEHan singleEHan = new SingleEHan();
private SingleEHan(){}
}