再探单例模式 清疚 2024-02-19 11:18 20阅读 0赞 #### 再探单例模式 #### * 一:故事背景 * 二:单例重点 * 三:总结提升 ## 一:故事背景 ## 最近在进行单例模式的复习,今天进行一下对应的总结,分析一下各个设计模式。今天从最简单的单例模式开始。 ## 二:单例重点 ## 1. 概念 一个类有且仅有一个实例,并且向整个系统提供这个实例。 2. 分类 Java中有两种构建方式,分别是饿汉式和懒汉式。饿汉式的创建方式是私有的静态变量并且实例化,启动时就会创建。懒汉式有线程安全和线程不安全的两种。线程安全的可以通过加synchronized锁实现。 3. 代码 这里我们重点分析懒汉模式的代码。 public class Singleton { //1.私有的构造函数 private Singleton(){ } //静态变量,防止指令重排序,不然的话可能将对象引用复制给了变量,但是却没有调用构造方法。 private static volatile Singleton singleton = null; //对外提供访问点 public static Singleton getSingleton(){ //第一个if判断提高效率 if(singleton == null){ synchronized (Singleton.class){ //获取锁后判断,避免产生多个实例对象 if (singleton == null){ //这不是一个原子操作,先执行 = 在执行 new Singleton(); singleton = new Singleton(); } } } return singleton; } } 1. 重点 上述代码重点是两个,第一个是,**为什么双重检验。判断单例对象是否为null**。第二个是**为什么使用volatile 关键字,作用是什么**。 第一个问题,第一层的if判断是为了提升效率,并发获取对象,不用去竞争锁。第二个是避免,多个线程同时走到了synchronized 代码块这里,倒是创建重复的对象。 第二个问题的原因是通过使用volatile避免指令重排序。导致对象赋值给了singleton但是却没有执行构造函数,倒是出现错误。 ## 三:总结提升 ## 本文简单分析了单例模式,讲解了其中重点。
相关 再探单例模式 再探单例模式 一:故事背景 二:单例重点 三:总结提升 一:故事背景 最近在进行单例模式的复习,今天进行一下对应的总结,分析一下各个设计模式。今 清疚/ 2024年02月19日 11:18/ 0 赞/ 21 阅读
相关 单例模式 http://blog.csdn.net/zhengzhb/article/details/7331369 定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实 曾经终败给现在/ 2022年09月25日 15:30/ 0 赞/ 307 阅读
相关 单例模式 class sigle{ protected static $ins = null; public function getIns(){ 深藏阁楼爱情的钟/ 2022年07月20日 20:27/ 0 赞/ 336 阅读
相关 再学单例模式 单例模式是我们平常很容易遇到一个设计模式,而且也是面试中肯定会手写的。本文主要针对单例模式的几种写法来做个简单的说明,希望能帮助到读者。 懒汉式(线程不安全) 最简 以你之姓@/ 2022年05月28日 09:27/ 0 赞/ 196 阅读
相关 单例模式 <table> <tbody> <tr> <td style="vertical-align:top;width:.6868in;"> <p style 矫情吗;*/ 2021年11月22日 10:52/ 0 赞/ 358 阅读
相关 单例模式 单例模式 单例模式(SingletonPattern)是java中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及 红太狼/ 2021年11月16日 05:30/ 0 赞/ 379 阅读
相关 单例模式 应用场景 1. windows的任务管理器 2. 网站的计数器 3. 应用程序的日志 4. 数据库连接池,因为数据库连接是一种数据库资源。数据库软件系统中使用数据 r囧r小猫/ 2021年11月11日 15:08/ 0 赞/ 412 阅读
相关 单例模式 单例模式有以下特征: 1. 只有一个对象存在 2. 对象的实例化必须在类中实现 一、懒汉模式(线程不安全) package com.kevin; 谁借莪1个温暖的怀抱¢/ 2021年10月01日 07:48/ 0 赞/ 395 阅读
相关 单例模式 1.定义 单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。 2.实现步骤 1. 将该类的构造方法定义为私有方法,这样其他处 小咪咪/ 2021年09月27日 13:56/ 0 赞/ 472 阅读
相关 单例模式 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责 Dear 丶/ 2021年09月17日 02:10/ 0 赞/ 406 阅读
还没有评论,来说两句吧...