单例的七种写法单例模式的几种实现方式
单例模式是一种常用的设计模式,它保证一个类只有一个实例,并提供一个全局访问点。在实际开发中,我们经常会遇到需要使用单例模式的场景。在Java中,单例模式有七种写法,下面我们来逐一介绍。
1. 饿汉式单例模式
饿汉式单例模式指的是在类加载时就实例化了该类的唯一实例。这种写法没有使用锁,因此线程安全。代码如下:
```
public class Singleton {
    private static final Singleton instance = new Singleton();
    private Singleton() {}
    public static Singleton getInstance() {
        return instance;
    }
}
```
2. 懒汉式单例模式
懒汉式单例模式指的是在第一次使用时才实例化该类的唯一实例。这种写法需要使用同步锁,因此效率较低。代码如下:
```
public class Singleton {
    private static Singleton instance;
    private Singleton() {}
    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
```
3. 双重校验锁单例模式
双重校验锁单例模式指的是先判断实例是否存在,若不存在,则进入同步块进行实例化,提高效率。这种写法需要使用volatile修饰实例,保证线程安全。代码如下:
```
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;
    }
}
```
4. 静态内部类单例模式
静态内部类单例模式指的是利用静态内部类的加载机制实现单例。这种写法没有使用锁,因此线程安全且效率高。代码如下:
```
public class Singleton {
    private Singleton() {}
    private static class SingletonHolder {
        private static final Singleton INSTANCE = new Singleton();
    }
    public static Singleton getInstance() {
        return SingletonHolder.INSTANCE;
    }
}
```
5. 枚举单例模式
枚举单例模式指的是利用枚举类型的特点实现单例。这种写法没有使用锁,因此线程安全且代码简洁。代码如下:
```
public enum Singleton {
    INSTANCE;
    public void doSomething() {
        // some code here
    }
}
```
6. ThreadLocal单例模式

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