java 单例模式 的几种写法

java 单例模式 的几种写法


2024年4月19日发(作者:)

在 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 () {

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 CE;

}

}

```

希望以上信息对您有帮助。


发布者:admin,转转请注明出处:http://www.yc00.com/web/1713540478a2269244.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信