章节
问答
课签
笔记
评论
占位
占位
今日不再显示
汤小洋
全栈工程师

Java高级工程师,从事软件开发及软件教育培训多年,授课耐心细致,通俗易懂,风趣幽默,富有激情,善于将复杂问题简单化。

提问题

写笔记

代码语言
公开笔记
提交
加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布

最新回答 / 246ba
五笔啊

最新回答 / 慕哥1121172
有个方法是setAccessbile(true)可以反射到私有构造器吧.

最新回答 / 慕后端244733
一般还是推荐使用DCL或者静态内部类单例模式

最赞回答 / 246ba
static静态变量是可以被修改的,所有只提供getInstance()方法供外界获取对象,保证变量不会被修改

最赞回答 / 0x0wh04m1
因为这个类在加载的时候就实例化了,就算thread1和thread2同时获取它,取到的是类加载时实例化的那个变量的值,所以说是线程安全的;而懒汉式线程不安全,因为有可能thread1在if(instance==null)判断为真时进入了if体里但又没开始实例化,而这时thread2也进来了,最终就会有2个实例了。

最赞回答 / 凌澜星空
单线程的时候使用懒汉式,能节省一点点的内存空间,多线程的时候使用饿汉式,能防止多线程导致的错误。

最赞回答 / Tips
老师只在类里面创建了一个实例,我只给第一个(饿汉模式)说明一下:1.老师先在第一步中创建一个实例:instance          要说明的是instance相当于一个人的姓名,就像刚出生的孩子我们会给他取一个称呼叫‘张三’,new的一个实例(对象)我们也要给他取一个名字叫‘instance’.那么我们就可以用instance来确定,它就是那个新建的实例。2.然后老师在第三步给出了一个方法(这是一个静态的开放权限的方法,可以通过类名直接调用):这个方法反回了instance(相当于人的名字,而不是那个具...

最赞回答 / jamesdeath123
如果两个线程 threadA和 threadB分别开始执行初始化:threadA: if (instance == null) 是真,然后进入条件区里面里面,在它还没有到初始化那一步的时候,跳到 threadB:这时(instance==null)对threadB仍然是真,于是也进入到条件区里面。接下来 threadA和threadB接下来先后执行instance = new ... 就会分别给两个线程两个不同的instance了。

讲师回答 / 汤小洋
懒汉模式的特点是加载类时比较快,但运行时获得对象的速度较慢,这是相比较于饿汉模式而言的
全部 我要发布
最热 最新
只看我的

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

账号登录 验证码登录

遇到问题
忘记密码

代码语言