直接产生单例实例
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;
}
}
本文深入探讨了Java中实现单例模式的多种方法,包括直接产生单例实例、线程安全与不安全的延迟实例化、完全同步及部分同步方法,以及使用静态内部类实现线程安全的延迟实例化。
1975

被折叠的 条评论
为什么被折叠?



