Java 面试题
目录

Java 中懒汉式和饿汉式的区别是什么?

· 约 3 分钟读完 · 第 152 / 274 章

推荐答案

在Java中,懒汉式和饿汉式是单例模式的两种实现方式,主要区别在于实例化的时机:

  • 饿汉式:在类加载时就创建单例对象,线程安全,但可能会浪费资源。
  • 懒汉式:在第一次使用时才创建单例对象,延迟加载,节省资源,但在多线程环境下需要额外的同步机制来保证线程安全。

本题详细解读

饿汉式实现

特点:

  • 实例在类加载时就已经创建,因此是线程安全的。
  • 由于实例在类加载时就创建,可能会造成资源浪费,尤其是在实例化过程复杂或资源消耗较大的情况下。

懒汉式实现

特点:

  • 实例在第一次调用 getInstance() 方法时才创建,实现了延迟加载,节省了资源。
  • 由于延迟加载,在多线程环境下需要额外的同步机制(如双重检查锁定)来保证线程安全。

总结对比

特性 饿汉式 懒汉式
实例化时机 类加载时 第一次调用 getInstance() 时
线程安全性 线程安全 需要额外同步机制保证线程安全
资源利用 可能浪费资源 节省资源
实现复杂度 简单 较复杂(需要处理线程安全问题)

通过以上对比,可以根据具体需求选择合适的单例模式实现方式。