在 Java 中,常见的单例模式实现方式有以下几种:
1. 饿汉式单例模式
在类加载时就已经完成了实例化,避免了线程同步的问题。代码如下:
```java
public class Singleton {
    private static Singleton instance = new Singleton();
    private Singleton() {}
    public static Singleton getInstance() {
        return instance;
    }
}
```
2. 懒汉式单例模式
在类加载时不进行实例化,在第一次调用 `getInstance` 方法时才进行实例化,可能会存在线程安全的问题。代码如下:
```java
public class Singleton {
    private static Singleton instance;
    private Singleton() {}
    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
```
3. 双检锁/双重校验锁(DCL,即 double-checked locking)单例模式
在懒汉式单例模式的基础上,加上了同步锁,避免了线程安全的问题。代码如下:
```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;
    }
}
```单例模式的几种实现方式
4. 静态内部类单例模式
利用了classloader的机制来保证初始化instance时只有一个线程,是最推荐使用的单例模式。代码如下:
```java
public class Singleton {
    private Singleton() {}
    private static class SingletonHolder {
        private static final Singleton INSTANCE = new Singleton();
    }
    public static final Singleton getInstance() {
        return SingletonHolder.INSTANCE;
    }
}
```
希望以上信息对您有帮助。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。