关于单例中懒汉和饿汉的一个小问题
该方法是一种行为,不是本能的。这种行为在调用它之前不会自己执行。
加载类是让虚拟机知道有这样的类,类是什么。
实际上,您可以自己知道。
Student getInstance(){if(student == null) {
//先判断是否为空
System.out.print(“null“);
student = new Student(); //懒汉式做法
}
return student;
}
main (..) {
Class.getInstance();//控制台会输出null的,而在之前JVM已经将你这个类加载好了
}
单例中懒汉和饿汉的本质区别
在单一情况下,懒惰和饥饿的人的本质在于以下几点:
1.饥饿的汉风格是安全的。在类的创建同时,创建一个静态对象供系统使用,这将在将来不会改变。如果懒惰样式在创建实例对象时不会添加同步,则会导致对对象访问对象注意安全。
2.就实施而言,其最大的区别是懒惰样式是延迟的加载。他仅在需要时创建对象,并且在虚拟机启动时将创建饥饿的汉风格。问题,写作简单明了,可以使用。但是它是加载类时的实例。如果它是工厂模型,并且许多实例被缓存,则必须考虑效率问题,因为无论是否创建该类别,都将加载此类。-单例模式懒汉和饿汉
3.建立单个对象的时间不同。“懒惰”是在您真正使用它时构建此对象。“饥饿的汉”是在开始时建立这个单一对象。
扩展资料
1.单打模式的优点是:
(1)示例控制:单模式将防止其他对象实例化其自身单身对象的副本,以确保所有对象访问唯一的示例。
(2)灵活性:由于类控制实例化过程,因此类可以灵活地更改实例化过程。
2.单模式的缺点是:
(1)交换:尽管数量很小,但如果每个对象请求参考,则需要检查是否存在类实例,并且仍然需要一些费用。可以使用静态初始化来解决此问题。
(2)可能的开发混淆:使用单身对象(尤其是类库中定义的对象)时,开发人员必须记住,他们不能使用新的关键字实例化对象。由于源代码可能无法访问,因此应用程序开发人员可能会意外地找到他们不能直接实例化此类别。-单例模式懒汉和饿汉
参考材料:单模式百科全书
单例模式中的懒汉式和饿汉式有什么区别
静态同步同步getInstance(){if(singleton == null){singleton = new Singleton();} return singleton;}比较:hungry han样式是作为线程而创建的。对象用于系统。将来,如果您不更改懒惰样式,则在创建实例对象时不会添加同步,它将导致对对象的访问。-单例模式懒汉和饿汉