写一个多线程下安全的java单例
时间: 2023-11-17 17:11:55 浏览: 76
在 Java 中实现一个多线程安全的单例模式,可以采用以下两种方式之一:
1. 双重检查锁 (Double Checked Locking)
```
public class Singleton {
private static volatile Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
```
2. 静态内部类 (Static Inner Class)
```
public class Singleton {
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
private Singleton() {}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
```
这两种方法都可以保证在多线程环境下单例模式的安全性,但是静态内部类的方式更加简单优雅,而且它在使用时才会被加载,达到了懒加载的效果。
阅读全文