单例设计模式:
一、饿汉式
public class Instance{
private static Instance instance = new Instance(); //初始化就创建
pricate Instance(){} //构造器私有化
public static Instance getInstance(){ //调用直接返回
if(instance == null){
synchronized(Instancce.Class){
if(instance == null){
instance = new Instance();
}
}
}
return instance;
}
}
二、懒汉式
public class Instance{
private static Instance instance;
pricate Instance(){} // 构造器私有化
public static Instance getInstance(){
if(instance == null){
instance = new Instance(); // 调用是创建
}
return instance;
}
}
三、双重校验
public class Instance{
private static Instance instance;
pricate Instance(){} // 构造器私有化
public static Instance getInstance(){
if(instance == null){
synchronized(Instancce.Class){ // 多线程:加锁、避免重复创建
if(instance == null){
instance = new Instance();
}
}
}
return instance;
}
}
/**
synchronized里面为什么加 if 解释
多线程时:假如三个线程同事走到synchronized(上一步已经判断为空,如果不加if在判断,三个都会创建):
第一个线程需要创建,第二个也创建、第三个也创建
*/
本文详细介绍了Java中的三种单例设计模式:饿汉式、懒汉式和双重校验。饿汉式在类加载时即创建实例,确保线程安全但可能导致不必要的资源消耗。懒汉式在首次调用getInstance()时才创建实例,但在多线程环境下可能不安全。双重校验通过同步块和双重检查确保线程安全并延迟实例化,是推荐的实现方式。
182

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



