单例模式是前人经过无次数实践验证总结出来,设计过程中反复的使用,可以解决很多特定问题的设计方法;
饿汉模式(预加载模式:静态内部类)
优点:在类加载的时候,就创建好对象放到静态区了,获取对象效率高。线程安全
缺点:类加载效率低,并且static修饰的成员占用资源。
public class Singleton {
private static final Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getSingleton() {
return instance;
}public void testSingleton(){
Singleton s = Singleton.getInstanc();
Singleton s2 = Singleton.getInstanc();
System.out.println(i == i2);
}
}
懒汉模式(双重校验锁)
public Singleton (){
private static Singleton instance;
private Singleton (){}
public static Singleton getInstance(){
if(instance == null){
synchronized(Singleton.class){
if(instance == null){
instance = new Singleton();
}
}
}
return instance ;
}
public void testSingleton(){
Singleton s = Singleton.getInstanc();
Singleton s2 = Singleton.getInstanc();
System.out.println(i == i2);
}
}
优点:节省资源,在需要的时候创建对象。
缺点:线程不安全。获取对象的时候,效率低
本文探讨了两种常见的单例模式实现——饿汉模式(预加载模式)和懒汉模式(双重校验锁),对比它们的加载时机、资源消耗、线程安全性和效率,帮助理解设计选择的重要性。
266

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



