1.双检锁/双重校验锁(DCL,即 double-checked locking)

JDK 版本:JDK1.5 起

是否 Lazy 初始化:

是否多线程安全:

实现难度:较复杂

描述:这种方式采用双锁机制,安全且在多线程情况下能保持高性能。
getSingleton() 的性能对应用程序很关键。

package com.advance.singleton;/*** @Auther: 谷天乐* @Date: 2018/9/17 21:02* @Description:*/public class Singleton {private volatile static Singleton singleton;private Singleton (){}public static Singleton getSingleton() {if (singleton == null) {synchronized (Singleton.class) {if (singleton == null) {singleton = new Singleton();}}}return singleton;}public static void main(String[] args) {Singleton s1 = getSingleton();Singleton s2 = getSingleton();System.out.println(s1==s2);}
}

转载于:https://www.cnblogs.com/Java-Starter/p/9664961.html

lazy初始化和线程安全的单例模式相关推荐

  1. java 静态内部类 线程安全问题_单例模式的七种写法, 面试题:线程安全的单例模式...

    http://cantellow.iteye.com/blog/838473 http://meizhi.iteye.com/blog/537563 第一种(懒汉,线程不安全): Java代码  pu ...

  2. 静态内部类、静态变量的加载次数-理解静态内部类实现线程安全的单例模式

    百度众说纷纭的情况下就不如自己写例子测试理论,话不多说,上代码: public class Sta {public static long date=System.currentTimeMillis( ...

  3. 静态内部类、静态变量的加载次数-理解静态内部类实现线程安全的单例模式懒加载

    原贴:https://www.cnblogs.com/suncoolcat/p/3362230.html 写的很详细,需细细品味. 百度众说纷纭的情况下就不如自己写例子测试理论,话不多说,上代码: p ...

  4. 使用C++11实现线程安全的单例模式

    相信很多小伙伴,对单例模式很熟悉,但是对于选择哪一种单例模式方案,可能不是特别清楚. 对网上五花百门的实现方式,是不是觉得很头大,到底这些方案都有些啥缺点,啥优点,哪种最完美,可以作为自己的常用代码库 ...

  5. 生产者消费者模型、信号量、线程池以及单例模式的实现

    生产者消费者模型!!---对典型的应用场景设计的解决方案 生产者与消费者模型应用场景:有线程不断的生产数据,有线程不断的处理数据. 数据的生产与数据的处理:放在同一个线程中完成,因为执行流只有一个,那 ...

  6. C++ static 变量和线程安全和单例模式

    static变量初始化顺序 1.1 全局变量.文件域的static变量和类的static成员变量在main函数执行之前初始化 1.2 局部静态变量在第一次被使用时初始化 static变量的线程安全 2 ...

  7. Android之线程安全的单例模式,Adapter注意事项之引用传值

    线程安全的单例模式 单位模式一般写法如下: public static FestivalLab mInstance; private FestivalLab() { } public static F ...

  8. C++实现线程安全的单例模式

    C++实现线程安全的单例模式 1.单例模式 一个简单的单例模式很容易实现:构造函数声明为private或protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实 ...

  9. JAVA的多线程、死锁、线程间通信、如何规避死锁、线程安全的单例模式

    主要内容: 多线程 线程和进程间的关系 Java中的线程理论 Java中线程类的实现方式 Java中线程的常用方法 线程安全性问题 线程间通信 线程的死锁 如何规避死锁 线程安全的单例模式 多线程 线 ...

最新文章

  1. Redis 面试连环炮,看看你能撑到哪一步?
  2. 5 年提速 500 倍,英伟达 GPU 创纪录突破与技术有哪些?
  3. OpenCASCADE绘制测试线束:简单的向量代数和测量之测量命令
  4. vscode+XDebug调试远程环境(虚拟机)上的PHP代码
  5. java args_Java命令行界面(第2部分):args4j
  6. 普通类创建获取session 方式_猿蜕变11——一文搞懂mybatis花式使用方式
  7. oracle中dbms_如何在DBMS中找到关系的最高范式?
  8. HTML/CSS入门及基础
  9. 盘点一下数据库的误操作都有哪些后悔药?
  10. 怎么修改数组中指定元素_topK问题总结:数组中的前K大元素
  11. vlan 的三种模式
  12. 通州区机器人比赛活动总结_机器人科技活动总结.doc
  13. webSocket和http长连接短连接
  14. SPSS进行问卷量表信度检验【SPSS 082期】
  15. 用树莓派打拳皇游戏(运行 SWF 游戏文件)【Adobe Flash Player + Chromium】
  16. 父级fixed_CSS3--改变固定定位(fixed)的父级定位元素
  17. Invalid argument: Subshape must have computed start >= end since stride is negative, but is 0 and 2
  18. 常量指针(Pointer to const)与指针常量(Const pointer)
  19. P5594 【XR-4】模拟赛
  20. citespace与mysql_citespace问题

热门文章

  1. 详解使用flask_paginate进行分页
  2. bzoj1833: [ZJOI2010]count 数字计数(数位DP+记忆化搜索)
  3. java(3) if结构
  4. C#语言基础——结构体和枚举类型
  5. 两种方法设置disabled属性
  6. 小康陪你学JAVA--------三大循环之Do-while循环
  7. IIS 6.0 401 错误
  8. 微软Windows SharePoint Services 3.0 应用程序模板( Templates)中文版推出了
  9. Android 4.4.2 动态添加JNI库方法记录 (一 JNI库层)
  10. 修改选中_win7文件名称如何批量修改