1.懒汉式,线程不安全
public class Demo1 {
private static Demo1 instance;
private Demo1(){}
public static Demo1 getInstance(){
if(instance==null){
instance=new Demo1();
}
return instance;
}
}
2.懒汉式,线程安全
public class Demo2 {
private static Demo2 instance;
private Demo2(){}
public static synchronized Demo2 getInstance(){
if(instance==null){
instance=new Demo2();
}
return instance;
}
}
3.饿汉式:在类装载时就实例化
public class Demo3 {
public static Demo3 instance=new Demo3();
private Demo3(){}
public static Demo3 getInstance(){
return instance;
}
}
4.静态内部类
public class Demo4 {
private static Demo4 instance;
public static class InstanceHolder{
private static final Demo4 instance=new Demo4();
}
private Demo4(){}
public static Demo4 getInstance(){
return InstanceHolder.instance;
}
}
5.双重校验锁:懒汉式线程安全的升级版
public class Demo5 {
private static volatile Demo5 instance;
private Demo5(){}
public static Demo5 getInstance(){
if(instance==null){
synchronized(Demo5.class){
instance=new Demo5();
}
}
return instance;
}
}
本文详细介绍了五种不同的单例模式实现方式,包括懒汉式(线程安全与不安全)、饿汉式、静态内部类及双重校验锁等。这些模式在Java中广泛应用于确保系统中某个类只有一个实例,并提供一个全局访问点。
101万+

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



