饿汉式
/**
* 饿汉式
* @author Administrator
*
*/
class Single{
private static final Single s=new Single();
private Single() {
}
public static Single getInstance() {
return s;
}
}
懒汉式一
/**
* 懒汉式一
* 延迟加载
* 存在线程安全问题
* @author Administrator
*
*/
class Single1{
private static Single1 s=null;
private Single1() {
}
public static Single1 getInstance() {
if(s==null)
s=new Single1();
return s;
}
}
懒汉式二
/**
* 懒汉式一
* 延迟加载
* 存在线程安全问题
* 解决之后效率低下
* @author Administrator
*
*/
class Single1{
private static Single1 s=null;
private Single1() {
}
public static synchronized Single1 getInstance() {
if(s==null)
s=new Single1();
return s;
}
}
懒汉式三
/**
* 懒汉式二
* 延迟加载
* 存在线程安全问题
* 解决之后较少锁的判断顺序
* @author Administrator
*
*/
class Single2{
private static Single2 s=null;
private Single2() {
}
public static Single2 getInstance() {
if(s==null) {
synchronized(Single2.class){
if(s==null)
s=new Single2();
}
}
return s;
}
}