当前位置: 首页 > news >正文

单例模式里面必须要知道的事情

为什么80%的码农都做不了架构师?>>>   hot3.png

       单例模式里面必须要知道的事情

单例模式的UML

            141625_VzGV_2285811.png

    //单例模式的正确写法,不过执行顺序必须要搞清楚
    public class Singleton {
	private static Singleton singleton = new Singleton();//1
	
	private Singleton(){
		System.out.println("你好");//2
	}
	public static Singleton getInstance(){
		return singleton;
	}
    }
    //很多朋友喜欢这样写,但这样是错误的写法,多线程下可能会产生不止一个实例
    public class Singleton {
	private static Singleton singleton;
	
	private Singleton(){
		System.out.println("你好");
	}
	public static Singleton getInstance(){
	        if(singleton==null){
	            return new Singleton();
	        }
		return singleton;
	}
    }

        所以单例模式里面必须要知道的事情是,写法2在多线程下是不能保证只有一个实例,就违背了单例模式。写法1的执行顺序是先静态实例的初始化,然后才是整个对像的实例化。(单例模式很多时候面试都喜欢叫手写,很多时候就是看你考虑多线程这个方面没有。)


转载于:https://my.oschina.net/QAAQ/blog/624795

相关文章:

  • 保留两位小数
  • Spring-boot 启动时碰到的错误
  • 开源监控解决方案Nagios+Cacti+PNP4Nagios+NConf+NDOUtils+Nagvis(三)pnp4nagios安装
  • 利用Python进行文章特征提取(二)
  • 点击推送消息跳转处理(iOS)
  • 2.C#中泛型在方法Method上的实现
  • 简单的苗为课堂搜索版式编写《超链接》
  • 深入字节码 -- 计算方法执行时间
  • Building QT projects from the command line
  • http 状态码(转载)
  • 集成Diagram Viewer跟踪流程
  • PHP 7.0.4 Windows升级
  • 发现一个nginx LUA开发Web App的框架
  • golang笔记——string
  • 【转】Android Support v4、v7、v13的区别和应用场景
  • 网络传输文件的问题
  • Android组件 - 收藏集 - 掘金
  • ComponentOne 2017 V2版本正式发布
  • JavaScript设计模式之工厂模式
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Theano - 导数
  • vue-router的history模式发布配置
  • 半理解系列--Promise的进化史
  • 包装类对象
  • 初识 beanstalkd
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 实现菜单下拉伸展折叠效果demo
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 在Unity中实现一个简单的消息管理器
  • postgresql行列转换函数
  • puppet连载22:define用法
  • 阿里云API、SDK和CLI应用实践方案
  • ​MySQL主从复制一致性检测
  • #define,static,const,三种常量的区别
  • #HarmonyOS:基础语法
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (day 12)JavaScript学习笔记(数组3)
  • (笔试题)合法字符串
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (小白学Java)Java简介和基本配置
  • (转)C#调用WebService 基础
  • (转)scrum常见工具列表
  • (转)socket Aio demo
  • .net core控制台应用程序初识
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET开源快速、强大、免费的电子表格组件
  • .net快速开发框架源码分享
  • .NET中使用Protobuffer 实现序列化和反序列化
  • ??myeclipse+tomcat
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • [ 蓝桥杯Web真题 ]-布局切换