Skip to content

懒汉式和饿汉式单例模式并没有很大区别 #671

Open
@guang19

Description

@guang19

先把2中单例模式的代码贴上:

饿汉式:
饿汉式单例

懒汉式:
懒汉式单例

懒汉式的单例初始化时间在第一次调用的时候。

然后关于饿汉式的初始化时间,网上大部分传闻说: “饿汉式单例在类加载阶段就已经初始化了,典型的空间换时间...”。

首先痛斥下以讹传讹的前辈们,这并不是开发者的精神。

类的生命周期我给作者提过issue,再复习一下:加载,验证,准备,解析,初始化,使用,卸载。
我想问问前辈们,饿汉式的单例在以上哪个阶段被初始化了?哪里占内存空间了?

以我个人的理解:最多在准备阶段,会给类的静态字段的变量赋零值,引用类型为null。

然后就是那8个初始化时机会初始化饿汉式的单例。而8个时机里面,正常使用,只有第一次获取单例的时候才会初始化单例。

所以我说 饿汉式与懒汉式基本无二。

Metadata

Metadata

Assignees

No one assigned

    Labels

    discussdiscuss a problemenhancementNew feature or request or suggestion

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions