Go最全【设计模式】8种方式实现单例模式_编程实现单例设计模式(1),毕业工作5年被裁

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

    SingleEh singleEh = SingleEh.getSingleEh();
    SingleEh singleEh1 = SingleEh.getSingleEh();
    System.out.println(singleEh1 == singleEh);//true
}

}


###### 2、懒汉单例的四种写法


懒汉单例的特点:在真正需要单例的时候才创建出该对象。



package com.JUC编程.volatile0;
public class SingleLh {
//懒汉式单例模式
//1.线程不安全
private SingleLh(){
}
private static SingleLh singleLh;//定义的时候不初始化
public static SingleLh getSingleLh(){
//当有两个线程同时进入到这个方法中时,就会发生线程安全问题
if (singleLh==null) {
return new SingleLh();
}
return singleLh;
}
}



package com.JUC编程.volatile0;
public class SingleLh {
//2.使用synchronized修饰方法,但是性能太低
private SingleLh(){
}
private static SingleLh singleLh;
public synchronized static SingleLh getSingleLh(){
if (singleLh==null) {
return new SingleLh();
}
return singleLh;
}
}



package com.JUC编程.volatile0;
public class SingleLh {
//3.可以缩小synchronized的使用范围,但是我们发现却保证不了线程安全
private SingleLh(){
}
private static SingleLh singleLh;
public synchronized static SingleLh getSingleLh(){
if (singleLh==null) {
synchronized (SingleLh.class) {
return new SingleLh();
}
}
return singleLh;
}
}


**volatile双重检查机制(推荐方式)**



package com.JUC编程.volatile0;
public class SingleLh {
//4.volatile双重检查模式(推荐)
private SingleLh(){
}
//volatile在此处主要的作用是保证可见性和禁止指令重排序
private volatile static SingleLh singleLh;
public static SingleLh getSingleLh(){
/*双重检查既保证了效率又保证了线程安全*/
if (singleLhnull) {
synchronized (SingleLh.class) {
if(singleLh
null) {
//因为new SingleLh()并不是一个原子操作,可能会发生指令重排。
return new SingleLh();
}
}
}
return singleLh;
}
}


###### 3、静态内部类单例方式


静态内部类是在被调用时才会被加载,这种方案实现了懒汉单例的一种思想,需要用到的时候才会去创建单例,加上JVM的特性,这种方式又实现了线程安全的创建单例对象。



package com.JUC编程.volatile0;
public class SingleStatic {
/*步骤:
* 1.提供一个静态内部类来,里面提供一个常量用来存储单例对象

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

如果你需要这些资料,可以戳这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值