写下双重校验锁的单例模式,以及枚举类的写法
时间: 2024-09-20 18:06:37 浏览: 34
java实现单例模式-双重校验锁模式(线程安全)
双重校验锁(Double-Checked Locking)是一种优化版的单例模式,用于解决线程安全问题,确保只有一个实例在并发环境中创建。这个策略的关键在于懒汉式初始化和双重检查:
```java
public class SingletonWithDCS {
private volatile static SingletonWithDCS instance;
private SingletonWithDCS() {}
public static SingletonWithDCS getInstance() {
if (instance == null) { // 第一次检查:如果实例为空
synchronized (SingletonWithDCS.class) { // 当前线程获取锁
if (instance == null) { // 第二次检查:再次确认实例是否仍为空
instance = new SingletonWithDCS(); // 如果还是空,创建实例并保持锁
}
}
}
return instance;
}
}
```
在这个例子中,只有当`instance`确实为空时,才会进入同步块创建新的实例,防止了多次创建。
关于枚举类(Enum)的写法,它主要用于创建有限数量、命名明确并且不可变的对象。下面是一个简单的枚举示例:
```java
public enum Color {
RED,
GREEN,
BLUE;
public String getDescription() {
return this.name().toLowerCase();
}
}
// 使用示例
Color firstColor = Color.RED;
System.out.println(firstColor.getDescription()); // 输出 "red"
```
枚举类中的每个常量都有默认构造函数,并可以有方法来扩展其功能。`Color`枚举只包含三个颜色成员,它们都是不可变的。
阅读全文