单例模式三种模式,饿汉(饥汉)、饱汉(懒汉)、双重锁模式

简介: 今天看某培训机构提供面试题中设计模式部分,对饱汉和饿汉比较感兴趣,就搜了一下,然后误人子弟,然后就觉得有必要记录一下 声明:本人没有看过设计模式的书籍,只是根据概念对比的看了一些博客; 首先示众一篇大错特错的文章,谁有CSDN帐号,提醒他把文章删了吧,错的离谱https://blog.

今天看某培训机构提供面试题中设计模式部分,对饱汉和饿汉比较感兴趣,就搜了一下,然后误人子弟,然后就觉得有必要记录一下

声明:本人没有看过设计模式的书籍,只是根据概念对比的看了一些博客;

首先示众一篇大错特错的文章,谁有CSDN帐号,提醒他把文章删了吧,错的离谱
https://blog.csdn.net/j_a_v_a_guan/article/details/48004007

 

经典写法:
懒汉和饿汉的最大区别就在于创建对象时候是否实例化;有new就是饿汉,反之就是懒汉,跟加不加
synchronized ,没有关系
懒汉:

public class SingleTon {

private static SingleTon instance;

private SingleTon() {

}

public static SingleTon getInstance() {
if (instance == null) {
instance = new SingleTon();
}
return instance;
}}

懒汉安全写法

public class SingleTon {

// 静态实例变量加上volatile
private static volatile SingleTon instance;

// 私有化构造函数
private SingleTon() {

}

// 双重检查锁
public static SingleTon getInstance() {
if (instance == null) {
synchronized(Singleton.class){
if(instance == null){
instance = new SingleTon();
}
}
}
return instance;
}

}

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

饿汉模式
public class SingleTon {
    // 静态实例变量,直接初始化
    private static SingleTon instance = new SingleTon();
    // 私有化构造函数
    private SingleTon() {

    }
    // 静态public方法,向整个应用提供单例获取方式
    public static SingleTon getInstance() {
        return instance;
    }
}

================================================================================================================================================

 

相关文章
|
缓存 负载均衡 监控
每日一博 - 反向代理、API 网关、负载均衡
每日一博 - 反向代理、API 网关、负载均衡
739 0
Element UI - el-scrollbar 如何隐藏横向滚动条?
Element UI - el-scrollbar 如何隐藏横向滚动条?
951 0
|
JavaScript 定位技术 API
论vue引入百度离线地图
先附上链接,下面会用到:百度地图传送门
1276 0
|
安全 关系型数据库 MySQL
如何将数据从MySQL同步到其他系统
【10月更文挑战第17天】如何将数据从MySQL同步到其他系统
1716 0
|
消息中间件 NoSQL JavaScript
阿里官方 Redis 开发规范
阿里官方 Redis 开发规范
Postman - 快速分享接口
Postman - 快速分享接口
2109 0
Postman - 快速分享接口
|
弹性计算 负载均衡
阿里云负载均衡怎么配置?
很多人对负载均衡一头雾水,不知道怎么用,流程顺序的是什么的。根据本教程教大家如何使用阿里云的负载均衡······
20607 0
|
JSON Java API
玩转Spring Boot之RestTemplate的使用
在java代码里想要进行restful web client服务,一般使用Apache的HttpClient。不过此种方法使用起来太过繁琐。Spring Boot提供了一种简单便捷的内置模板类来进行操作,这就是RestTemplate。
6266 0
|
机器学习/深度学习 人工智能 算法
小白教程-阿里云快速搭建Stable-Diffusion WebUI环境+免费试用
Stable-Diffusion 是目前热门的AIGC图像生成方案,通过开源与社区共享模型的方式,成为AI艺术与创意产业的重要工具。本文介绍通过阿里云快速搭建SD WebUI的服务,并有免费试用权益,适合新手入门。通过详细步骤指导,帮助读者轻松上手,享受创作乐趣。
2440 0