永发信息网

求java大牛,关于单例模式的使用问题,小白真心求教

答案:1  悬赏:0  手机版
解决时间 2021-11-21 22:05
求java大牛,关于单例模式的使用问题,小白真心求教
最佳答案
单例模式是Java23中设计模式中比较简单的一种,特点如下:
  1、单例类只能有一个实例。
  2、单例类必须自己创建自己的唯一实例。
  3、单例类必须给所有其他对象提供这一实例。
一、懒汉式单例、
//懒汉式单例类.在第一次调用的时候实例化自己
public class Singleton {
private Singleton() {}
private static Singleton single=null;
//静态工厂方法
public static Singleton getInstance() {
if (single == null) {
single = new Singleton();
}
return single;
}
}
懒汉式单例模式是线程不安全的,请注意,关于线程安全由于篇幅问题可以自己百度。
二、饿汉式单例
//饿汉式单例类.在类初始化时,已经自行实例化
public class Singleton1 {
private Singleton1() {}
private static final Singleton1 single = new Singleton1();
//静态工厂方法
public static Singleton1 getInstance() {
return single;
}
}

饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以天生是线程安全的。
饿汉式和懒汉式区别
从名字上来说,饿汉和懒汉,
饿汉就是类一旦加载,就把单例初始化完成,保证getInstance的时候,单例是已经存在的了,
而懒汉比较懒,只有当调用getInstance的时候,才回去初始化这个单例。
另外从以下两点再区分以下这两种方式:

1、线程安全:
饿汉式天生就是线程安全的,可以直接用于多线程而不会出现问题,
懒汉式本身是非线程安全的,为了实现线程安全有几种写法,分别是上面的1、2、3,这三种实现在资源加载和性能方面有些区别。

2、资源加载和性能:
饿汉式在类创建的同时就实例化一个静态对象出来,不管之后会不会使用这个单例,都会占据一定的内存,但是相应的,在第一次调用时速度也会更快,因为其资源已经初始化完成,
而懒汉式顾名思义,会延迟加载,在第一次使用该单例的时候才会实例化对象出来,第一次调用时要做初始化,如果要做的工作比较多,性能上会有些延迟,之后就和饿汉式一样了。
望采纳!谢谢。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我跟家里人断结关系了,我想拆户自己过,可以吗
工伤耳朵缝5针应赔偿多少
2018年双色球开奖全部2018017
天津河东煤气首次办卡去哪儿
手握不住东西是怎么回事
但曾相见便相知,相见何如不见时.安得与君相
王者荣耀后羿重做后铭文怎么搭配 新版后羿铭
春秋晚期 士 阶层崛起 有什么意义
航拍安上防护罩就装不了箱子怎么办
3.2乘8.4估算值是多少
能详细介绍下微丝滑动学说吗 不是百度复制的
我的是单十五音箱,190磁75芯的低音,51.5芯
馨艺地址好找么,我有些事要过去,
炫舞名女号是rose男号用什么好,求大神指点
昨日新开传世 就是那个七夕传世 中午12点开的
推荐资讯
Tina is an English girl. She is twelve. Sh
QQ群现在建怎么不需要等级了,随便建了。。
我27岁了只有小学毕业学历该怎么办。我想提高
大蒜冬天可以不盖吗
在汉朝“邮督"是个什么样的官?
一个76年属龙的和一个88年属龙的,迷信方面能
乡巴佬 用日语怎么说
读舒哥的单词怎么拼。啥意思
轴承6214n和nr后缀什么意思
我记得好像有一部韩剧,讲的是
张一元店铺 卖茶叶可以用微信付账吗?急求..
西双版纳州庆是哪几天
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?