单例

简介: 单例就是该类只能返回一个实例。 单例所具备的特点:      1.私有化的构造函数      2.私有的静态的全局变量      3.公有的静态的方法 单例分为懒汉式、饿汉式和双层锁式 饿汉式: public class Singleton1 {       private Singleton1() {};       private static Singleton1

单例就是该类只能返回一个实例。

单例所具备的特点:

     1.私有化的构造函数

     2.私有的静态的全局变量

     3.公有的静态的方法

单例分为懒汉式、饿汉式和双层锁式

饿汉式:

public class Singleton1 {

      private Singleton1() {};

      private static Singleton1 single = newSingleton1();

      public static Singleton1 getInstance() {

          return single;

     }

 }

 

懒汉式:

public class Singleton2 {

      private Singleton2() {}

      private static Singleton2 single=null;

      public tatic Singleton2 getInstance() {

           if (single == null) { 

              single = new Singleton2();

          } 

         return single;

     }

 }

线程安全:

public class Singleton3 {

        private Singleton3() {}

        private static Singleton3 single ;

        public static Singleton3 getInstance() {

              if(null== single){

                     synchronized(single ){

                            if(null== single){

                                   single = new Singleton3();

                            }

                     }

              }

              returnsingle;

         }

}

 

参考:

 

通过双重判断来保证单列设计模式在多线程中的安全性,

并且它在性能方面提高了很多。
目录
相关文章
|
分布式计算 关系型数据库 大数据
「读书笔记」《大规模分布式存储系统:原理解析与架构实战》:九
「读书笔记」《大规模分布式存储系统:原理解析与架构实战》:九
|
12月前
|
Java Maven Spring
【SpringBug】lombok插件失效,但是没有报错信息,@Data不能生成get和set方法
解决写了@Data注解,但是在测试文件中生成的反编译target文件Us二Info中没有get和set方法
1003 16
|
网络协议 网络性能优化 网络架构
运输层---概述
运输层---概述
288 2
GOLANG MAP 查找
GOLANG MAP 查找
255 3
倚天产品介绍|阿里云核心产品—倚天710
阿里云最新产品手册——阿里云核心产品——倚天710自制脑图
倚天产品介绍|阿里云核心产品—倚天710
|
存储 Kubernetes 调度
K8s Pod亲和性、污点、容忍度、生命周期与健康探测详解(下)
本文全面探讨了Kubernetes集群中Pod的四种关键机制——Pod亲和性、污点(Taints)、容忍度(Tolerations)、生命周期以及健康探测,为读者提供了深入理解并有效应用这些特性的指南。
javaSE思维导图
这篇文章是关于Java SE基础的总结,包含了思维导图,以帮助读者更好地理解和记忆Java SE的知识点。
javaSE思维导图
|
前端开发 JavaScript Java
【Java】Java与JavaScript:探究它们的区别与联系
【Java】Java与JavaScript:探究它们的区别与联系
381 0
|
Java Spring
SpringBoot详细打印启动时异常堆栈信息
`SpringBoot`在项目启动时如果遇到异常并不能友好的打印出具体的`堆栈错误信息`,我们只能查看到简单的错误消息,以致于并不能及时解决发生的问题,针对这个问题`SpringBoot`提供了故障分析仪的概念(failure-analyzer),内部根据不同类型的异常提供了一些实现,我们如果想自定义该怎么去做?
|
Unix Linux Go
Go 语言环境安装
在使用golang安装软件完成安装之后,如果使用go run或者go build时,显示不能识别go 命令。此时可以先重启电脑。因为PATH的路径此时并没有加载对应的go 安装路径 ,win下默认的路径是:c:\go或者C:\Program Files\Go。
185 0