为了账号安全,请及时绑定邮箱和手机立即绑定

模式的秘密---单例模式

难度中级
时长30分
学习人数
综合评分9.63
276人评价 查看评价
9.8 内容实用
9.6 简洁易懂
9.5 逻辑清晰
讲的挺好的,为什么这么做讲的很清楚,推荐
非常详细、易懂!
懒汉和恶汉的区别
懒汉:获取快(线程不安全的)
恶汉:加载快(线程安全的)
有设计模式的代码更为可靠。

已采纳回答 / 慕粉4117368
是的,比如要是多线程访问的情况下,很容易,线程一访问到一半,线程二突然插进来执行,所以要加同步处理的机制,防止在线程一执行的情况下,有别的线程抢占进来执行,加上同步就可以使一个线程运行完了,下一个线程才可以拿到cpu的资源继续执行
并不是我想学习的那种,我想演示一下懒汉怎么出现线程不安全现象,以及如何解决线程不安全,然后单例模式还有几种实现方式,比如说枚举,天然的单例,还能防止反射去绕过安全机制拿到实例
所谓的懒汉模式线程不安全可以简单的理解为,在A使用这个类的实例的时候,对象正在创建的时候,B也要来使用这个实例,所以不太安全,但是,饿汉模式在类加载的时候就已经创建了对象,A和B可以同时使用这个实例。
讲的非常好!一下就听懂了,网上的文字教程根本看不懂
感谢老师的讲解, 很清楚,很好理解!
public class Sington1 {
private static volatile Sington1 sington1;

private Sington1() {
}

public static Sington1 getInsance() {

if (sington1 == null) {
synchronized (Sington1.class) {

if(sington1==null){
sington1 = new Sington1();
}

}
}
return sington1;
}

}
套路2字惟妙惟肖!如果说把编程比作是理发,那么设计模式就好比是寸头、平头、爆炸头、蘑菇头以及锅盖头等等头型!
java的套路来了
听到各位小伙伴们,才发现是刚看完的struts拦截器老师...
一听就是经验深厚的老师了
这里讲的线程不安全,主要是在判断是否创建了这个实例的代码块里。楼上很多赞的那个,提到的方法叫双重检查锁定。
问题根源是,instance = new Instance()可以分解成三行伪代码。正常的顺序是分配对象的内存空间->初始化对象->设置instance指向刚分配的内存地址。注意第2.3步会被重排序。这时候instance被分配了内存但是没有初始化。如果这时候有一个线程B来访问,他判断instance!=null后调用这个对象时发现对象没有初始化,就出现bug了~解决方案:1、Instance声明为volatile类型。2、允许重排序,但是重排序不被其他线程看到。
课程须知
本课程是 Java 开发课程的高级课程,如果您是新手,建议先移步 《Java入门第一季》和《Java入门第二季》
老师告诉你能学到什么?
1、 了解设计模式 2、 理解单例模式的含义及应用场合 3、 掌握单例模式中饿汉模式和懒汉模式的使用 4、 理解两种模式的区别

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消