用java写一个dcl单例
时间: 2023-03-31 08:03:30 浏览: 172
模式的代码怎么写?
我可以回答这个问题。DCL(Double-Checked Locking)单例模式是一种线程安全的单例模式实现方式。以下是用 Java 实现 DCL 单例模式的代码:
public class Singleton {
private volatile static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
在这个实现中,使用了 volatile 关键字来保证 instance 对象的可见性和有序性。同时,使用了双重检查锁定机制来保证线程安全和性能。
相关问题
DCL实现懒汉模式创建单例
在DCL(Double Checked Locking)实现懒汉模式创建单例,可以先定义一个私有静态变量,然后在getInstance()方法中进行双重校验加锁,具体实现如下:
```java
public class Singleton {
private volatile static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
```
这里使用了volatile关键字,保证多线程情况下instance变量的可见性和有序性,也就是一个线程修改了instance变量的值,其他线程可以立即看到修改后的值,而不是使用本地缓存的旧值。同时,使用双重校验加锁,保证了多线程情况下只有一个线程可以创建对象,其他线程只能等待获取已经创建好的对象。
阅读全文