Java 面试题
目录

Java 中单例模式有哪些实现方式?

· 约 4 分钟读完 · 第 151 / 274 章

推荐答案

在 Java 中,单例模式的实现方式主要有以下几种:

  1. 饿汉式
  2. 懒汉式
  3. 双重检查锁定
  4. 静态内部类
  5. 枚举

1. 饿汉式

2. 懒汉式

3. 双重检查锁定

4. 静态内部类

5. 枚举

本题详细解读

1. 饿汉式

饿汉式在类加载时就完成了实例化,避免了多线程同步问题。优点是实现简单,线程安全;缺点是如果从未使用过该实例,会造成内存浪费。

2. 懒汉式

懒汉式在第一次调用 getInstance 方法时才创建实例,节省了内存。缺点是每次调用 getInstance 方法时都需要进行同步,影响性能。

3. 双重检查锁定

双重检查锁定结合了懒汉式和饿汉式的优点,既实现了延迟加载,又保证了线程安全。通过 volatile 关键字和双重检查机制,确保了在多线程环境下也能正常工作。

4. 静态内部类

静态内部类方式利用了类加载机制来保证初始化实例时只有一个线程,既实现了延迟加载,又保证了线程安全。这种方式比双重检查锁定更加简洁。

5. 枚举

枚举方式是实现单例模式的最佳方式。它不仅保证了线程安全,还能防止反序列化重新创建新的对象。枚举单例是《Effective Java》作者 Josh Bloch 推荐的方式。

每种实现方式都有其适用场景,开发者可以根据具体需求选择最合适的实现方式。