在 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小时内删除。
发表评论