饿汉模式
public class Singleton {
private static Singleton instance=new Singleton();
private Singleton(){
}
public static Singleton getInstance(){
return instance;
}
}
生成实例时间:类加载时,所以不能延迟加载。
是否线程安全:是。
懒汉模式
public class Singleton {
private static Singleton instance;
private Singleton(){
}
public static Singleton getInstance(){
if (null == instance){
instance=new Singleton();
}
return instance;
}
}
生成实例时间:使用getInstance方法时,可以延迟加载。
是否线程安全:否。
双检锁
public class Singleton{
private volatile static Singleton instance;
private Singleton(){
}
public static Singleton getInstance(){
if (instance == null){
synchronized (Singleton.class){
if (instance == null){
instance=new Singleton();
}
}
}
return instance;
}
}
生成实例时间:使用getInstance方法时,可以延迟加载。
是否线程安全:是。
静态内部类
public class Singleton{
private Singleton(){
}
public static Singleton getInstance(){
return InstanceHolder.instance;
}
private static class InstanceHolder{
private static Singleton instance=new Singleton();
}
}
生成实例时间:使用getInstance方法时,可以延迟加载。
是否线程安全:是。
本文深入探讨了四种不同的单例模式实现:饿汉模式、懒汉模式、双检锁和静态内部类。每种模式的实例生成时间、线程安全性及优缺点均有详细解析。
817

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



