关于单例模式的懒加载

小小丁灬 发布于 2016/05/31 08:39
阅读 218
收藏 0
知道很多种单例模式的懒加载模式,但就不明白为什么要用懒加载,既然用单例模式,就代表着这个类我会用到,直接类加载的时候new 对象不是更好?不用考虑线程安全,还没有 synchronized  消耗性能.求指点.
加载中
0
beidao-ai
beidao-ai
懒加载的好处就是只有当你用到类的时候才去加载它,这样避免有些类根本没用到就去加载了。
0
幽冥领域

在代码中,一切能推后的事情都推后做。

所以在用到的时候才去加载会比较好。比如hibernate外键关联的对象,默认都是延迟加载的。

0
xpbob
xpbob
你直接new的情况肯定是用的static的,当你这个类还有其他功能的时候,类似有公用的常量声明的时候,在使用这些声明的时候类就被加载了,问题是我们那时候还不需要这个类的其他功能,平白增加了内存的消耗,懒加载的好处就是这个,你一个类都是给单例服务的时候,此时怎么加载都没区别,一般我们都是直接new的。懒加载还有内部类的写法,那个方法也不用synchronized,也能做到懒加载。
0
Lucare
Lucare
如果这个类没有其它静态变量和静态方法,那么你就可以直接new,因为没有其它操作会引起类加载,只会在你第一次使用这个单例的时候去创建。否则建议你使用内部类来解决懒加载而不需要同步的问题。
0
魔力猫
魔力猫
生命周期还是交给容器自己来管理吧。各种自己实现的懒加载单例模式不是容易造成性能问题就是线程不安全,随着Java的发展,这种工作已经由框架和JVM实现了。
0
快乐的一只小青蛙
快乐的一只小青蛙
我们称为懒汉模式和饿汉模式,饿汉模式满足大多数情况需求。但总有例外,用Qt做界面就曾遇到过只能用到懒汉模式不能用饿汉模式的
0
大止刀口
大止刀口

对于比较大的框架,用户不一定会用到所有单例。

比如某框架提供了功能A,而这个功能对于用户B来说不需要。

如果这个框架很大,功能很齐全。用户只用到部分功能,就可以避免因全都要加载而造成的资源消耗。

返回顶部
顶部