QQ网名大全

为什么单例**要起名叫饿汉式和懒汉式?

你好,我是小黄,一个爱看书的j**a程序员,我来回答这个题,谢谢。单例**(Singleton)就是要确保类在内存中只有一个对象,该实例必须自动创建,并且对外提供。In eager initialization,the object is created in the program execution,in a normal way,which sometimes the programmer may not use it in the program.This looks waste of memory and processor time.
Other way is to create the object when the programmer really requires.This is called lazy initialization(one of the design patterns).That is,if the object is created at runtime,only when the programmer requires is known as lazy initialization.
饿汉式:类加载的时候就实例化对象了,这样做节约了时间,并且线程安全,但是浪费内存空间。如果该实例从始至终都没被使用过,则会造成内存浪费。懒汉式:需要使用实例的时候才去加载,这么做节约了内存空间,浪费了时间,线程不安全的。这种也叫做延迟加载。我们来看看饿汉式的代码:
public class Singleton {
private static Singleton instance=new Singleton();private Singleton(){}
public static Singleton getInstance(){
return instance;}
}
再看看懒汉式 延迟加载的:
public class LazySingleton {
private static LazySingleton instance;private LazySingleton(){}
public static LazySingleton getInstance(){
if(instance=null){
instance=new LazySingleton();}
return instance;}
}
这种在多线程下是不安全的,因此有一种double-checked locking的解决方案,
进行了两次null检查,这样就可以保证线程安全了。这样,实例化代码只用执行一次,后面再次访问时,判断是否为 null,直接return实例化对象。同时,对singleton对象使用volatile关键字进行限制,保证其对所有线程的可见性,并且禁止对其进行指令重排序优化。代码如下:
public class DoubleCheckSingleton {
private static volatile DoubleCheckSingleton instance;private DoubleCheckSingleton(){}
public static DoubleCheckSingleton getInstance(){
if(instance=null){
synchronized(DoubleCheckSingleton.class){
if(instance=null){
instance=new DoubleCheckSingleton();}
}
}
return instance;}
}
其次也可以使用枚举的方式。以上供参考,如果您觉得有点帮助,请帮忙点赞,或者关注我,谢谢。
佚名
2024-06-02 05:37:17
最佳回答
类似问题(10)
  • 佚名
    2024-06-02 08:25:25

    为什么武汉的火车站取名为武昌站和汉口站?

    汉口站,武昌站的历史比武汉这个名字的历史还长。建汉口站和武昌站的时候,还没有武汉市这个名字,当时是汉口市,武昌府和汉阳县,所以当时没办法叫武汉北,武汉南。当时就...

  • 佚名
    2024-06-02 07:59:38

    为什么武汉的火车站取名为武昌站和汉口站?

    这是历史原因造成的,武昌站和汉口站最少有一百多年历史了,估计比好多城市的火车站地名还早,要知道历史上武汉除北京天津外可能是比较最早通火车的城市,当时晚清张之洞主...

  • 佚名
    2024-06-02 14:32:14

    【汉服】所有的样式的名称各叫什么?

    一、汉服样式:1、襦裙汉服款式之一,即上襦下裙,交领右衽。襦裙作为汉服的主要形式,细节一直有变化,有的为深交领至腋下,袖缘很宽,袖根宽于袖口,有腰线,多认为是中...

  • 佚名
    2024-06-02 02:09:09

    诱导公式为什么叫诱导公式

    所谓“诱导公式”,就是通过这些起中间作用的公式把原来相对比较复杂,不利于计算的计算式化简成比较容易的,相对好解的式子,从而完成计算要求,这些公式在这个过程中起到...

  • 佚名
    2024-06-02 07:32:59

    韩国人不懂汉语为什么要起汉字名?

    - - 因为人家户籍是登记中文的 人家宪法也是中文写的 韩文是表音文字 一个韩文可以对印好几个中文字 韩国被日本占领前 两班贵族阶级都是会中文的 只有平民百姓才...

  • 佚名
    2024-06-02 14:15:43

    汉族为什么要叫“汉”

    汉族是我国人数最多的一个民族,但“汉族”这个词却大有来历。 “汉”字的本义是指汉水,也称汉江,是长江的一大支流。2000多年前,刘邦在汉水上游地区称为汉王,并以...

  • 佚名
    2024-06-02 13:58:23

    为什么汉化的满族人要丑化汉族

    如果是真的汉化了,那还是丑化汉族干什么?那显然就是没有汉化嘛。唉其实你要是说汉化的话,那如何来界定呢怎么才算是汉化呢?说汉语就一定是汉化吗?可现在汉语当中有大量...

  • 佚名
    2024-06-02 08:00:00

    这件汉服叫什么款式?

    淑女风格,穿在大街上回头率特别高

  • 佚名
    2024-06-02 08:00:00

    澳门香港用什么方式把汉字姓名译为英文名?

    香港主要用刘锡祥先生的粤语英语拼音。澳门也是用粤拼,如崔世安(Chui Sai On)、何厚铧(Ho Hau Wah)。

  • 佚名
    2024-06-02 08:00:00

    绝句有多少个汉字,怎么例式

    绝句分五言绝句和七言绝句,两种都是4句,每句分别为5个字和7个字,即五言绝句4*5=20字,七言绝句4*7=28字。例:《静夜思》唐·李白床前明月光,疑是地上霜...