package org.example;
/**
* 双重检查锁定(Double-Checked Locking)
* 这种方式结合了懒汉式和同步方法的优点,既保证了线程安全,又提高了效率。需要注意的是,instance需要声明为volatile,以防止指令重排序导致的问题。
*/
public class DoubleCheckedLockingSingleton {
private static volatile DoubleCheckedLockingSingleton instance;
private DoubleCheckedLockingSingleton() {}
public static DoubleCheckedLockingSingleton getInstance() {
if (instance == null) {
synchronized (DoubleCheckedLockingSingleton.class) {
if (instance == null) {
instance = new DoubleCheckedLockingSingleton();
}
}
}
return instance;
}
}
设计模式-Java单例模式的各种实现实例
需积分: 0 80 浏览量
更新于2024-08-06
收藏 6KB ZIP 举报
单例模式(Singleton Pattern)是一种常用的软件设计模式,它保证一个类仅有一个实例,并提供一个访问该实例的全局访问点。这种模式通常用于需要频繁地创建和销毁的对象,以减少系统性能开销。
单例模式的优点:
对于频繁使用的对象,可以缩减系统的开销,特别是当对象需要频繁地进行销毁和创建时,单例模式无疑能提供更好的性能。
单例模式具有一定的“防并发作用”,由于单例模式只生成一次实例化对象,可以减少系统内存的开销,特别是对于多线程单例,即可以在系统启动时完成实例化,避免对资源的重复占用。
单例模式可以作为程序中的“全局锁”,方便控制并发。