直接产生单例实例
public class Singleton {
private Singleton(){
}
//直接产生单例实例 线程安全的
private static final Singleton single=new Singleton();
public static Singleton getInstance(){
return single;
}
}
直接产生单例实例 线程安全的
延迟实例化 线程不安全的
public class Singleton {
private Singleton(){
}
//延迟实例化 线程不安全的
private static Singleton single=null;
public static Singleton getInstance(){
if(single==null){
single=new Singleton();
}
return single;
}
}
延迟实例化 线程安全的 完全同步方法
public class Singleton {
private Singleton(){
}
//延迟实例化 线程安全的 完全同步方法
private static Singleton single=null;
public static synchronized Singleton getInstance(){
if(single==null){
single=new Singleton();
}
return single;
}
}
延迟实例化 线程安全的 部分同步方法
public class Singleton {
private Singleton(){
}
//延迟实例化 线程安全的 部分同步方法
private static Singleton single=null;
public static Singleton getInstance(){
if(single==null){
synchronized(Singleton.class){
if(single==null){
single=new Singleton();
}
}
}
return single;
}
}
延迟实例化 线程安全的 静态内部类
public class Singleton {
private Singleton(){
}
private static class Builder{
private static final Singleton single=new Singleton();
}
//延迟实例化 线程安全的 静态内部类
private static Singleton single=null;
public static Singleton getInstance(){
return Builder.single;
}
}