懶漢式-雙重覈驗:
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(){}
}