单例模式例子
时间: 2023-07-05 10:24:44 浏览: 59
单例模式是一种常用的设计模式,它保证一个类只有一个实例,并提供一个全局访问点。
下面是一个简单的单例模式的例子:
```java
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
```
在上面的例子中,我们创建了一个 Singleton 类,它只有一个私有的构造函数,以确保该类不能被直接实例化。我们使用一个静态变量 instance 来保存 Singleton 类的唯一实例。getInstance() 方法返回这个实例,如果该实例不存在,则创建一个新的实例并返回。
这个例子是线程不安全的,因为多个线程可能同时调用 getInstance() 方法并创建多个实例。为了解决这个问题,我们可以使用线程安全的双重检查锁定实现单例模式:
```java
public class Singleton {
private static volatile Singleton instance = null;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
```
在上面的例子中,我们使用 volatile 关键字确保 instance 变量被正确地初始化,同时使用双重检查锁定确保线程安全。