线程安全写法:

public class Singleton {/* 线程安全推荐写法 */private Singleton() {}static class SigletonHandler {static Singleton instance = new Singleton();}public static Singleton getInstance() {return SigletonHandler.instance;}/* 线程安全双check写法 */private static Singleton instance;public static Singleton getInstance2() {if (instance == null) {synchronized (Singleton.class) {if (instance == null) {instance = new Singleton();}}}return instance;}/* 线程安全 饿汉写法 */private static Singleton instance2 = new Singleton();public static Singleton getInstance3() {return instance2;}
}

平时用到的单例代理类:

public abstract class Lazy<T> implements AutoCloseable {private volatile T instance = null;protected abstract T makeObject();protected abstract void destroyObject(T obj);public T get() {if (instance == null) {synchronized (this) {if (instance == null) {instance = makeObject();}}}return instance;}@Overridepublic void close() {synchronized (this) {if (instance != null) {T instance_ = instance;instance = null;destroyObject(instance_);}}}
}

调用代理类:

public class Consumer {public static void main(String[] args) {Lazy<MyClass> lazy = new Lazy<MyClass>() {@Overrideprotected MyClass makeObject() {return new MyClass(5);}@Overrideprotected void destroyObject(MyClass obj) {obj.index = 0;}};MyClass myClass = lazy.makeObject();}
}

设计模式(八)之单例模式相关推荐

  1. 【白话设计模式八】命令模式(Command)

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# 白话设计模式 工厂模式 单例模式 [白话设计模式一]简单工厂模式(Simple Factory) [白话设计模式二] ...

  2. 单例设计模式介绍||单例设计模式八种方式——1) 饿汉式(静态常量) 2) 饿汉式(静态代码块) 3) 懒汉式(线程不安全) 4) 懒汉式(线程安全,同步方法)

    单例模式 单例设计模式介绍 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法). 比如Hibernate的 ...

  3. 设计模式之一:单例模式

    设计模式之一:单例模式 目录介绍 1.单例模式介绍 2.单例模式定义 3.单例模式使用场景 4.单例模式的实现方式 4.1 懒汉式[线程不安全] 4.2 懒汉式[**synchronized 线程安全 ...

  4. golang atomic load 性能_设计模式之Golang单例模式

    今天给大家讲下什么是单例模式,以及在Go语言中如何用正确的姿势实现它.其实单例模式是一种在平时开发中经常用到的软件设计模式.在设计模式结构中,其核心是只包含一个被称为单例的特殊类.通过单例模式可以确保 ...

  5. 单例设计模式 序列化破坏单例模式原理解析及解决方案?

    单例设计模式 序列化破坏单例模式原理解析及解决方案? 序列化和反序列化 反射的破坏

  6. Java设计模式中的单例模式

    有时候在实际项目的开发中,我们会碰到这样一种情况,该类只允许存在一个实例化的对象,不允许存在一个以上的实例化对象,我们将这种情况称为Java设计模式中的单例模式.设计单例模式主要采用了Java的pri ...

  7. c语言 适配器模式例子,NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】...

    NodeJS设计模式总结[单例模式,适配器模式,装饰模式,观察者模式] 发布时间:2020-08-21 03:08:03 来源:脚本之家 阅读:117 作者:lucky芬 本文实例讲述了NodeJS设 ...

  8. 八.创建型设计模式——Singleton Pattern(单例模式)

    定义 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类,它提供全局访问的方法.单例模式的要点有三个:一是某个类只能有一个实例:二是它必须自行创建这个实例:三是 ...

  9. 设计模式(2)--Singleton(单例模式)--创建型

    1.模式定义: 单例模式确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 2.模式特点: (1)单例类只能有一个实例. (2)单例类必须自己创建自己的唯一实例. (3)单例类必须给所有 ...

  10. 创建型设计模式对比总结 设计模式(八)

    创建型模式是new 的一种替代方式,可以将对象的创建与具体的类型进行分离 目前已经介绍了5种创建型设计模式(如果简单工厂算一种的话,那就是6种) 分别是: 简单工厂模式.工厂方法模式.抽象工厂模式.建 ...

最新文章

  1. opensuse 安装 php,在openSUSE上安装和配置LAMP(2)
  2. 插入blob字段的简单方法
  3. 获取返回值作为变量_解决多线程间共享变量线程安全问题的大杀器——ThreadLocal...
  4. python生成uuid_咸鱼高赞回答:有什么相见恨晚的Python技巧,附赠python最新教程...
  5. alpine登陆mysql_如何构建一个php7-alpine的docker镜像
  6. PHP Calendar 函数,wordpress函数get_calendar()用法示例
  7. win7关闭系统索引服务器,win7系统如何关闭索引服务
  8. How do I enable core dumps for everybody
  9. 《Spring2之站立会议5》
  10. MacCleaner Pro 2.4更新(支持最新M1处理器mac)
  11. 软件项目管理案例教程第4版知识清单
  12. linux lightdm启动阶段黑屏,Ubuntu卡logo、卡住、黑屏无法正常启动、屏幕和键盘背光无法调节等一系列问题的罪恢祸首:NVIDIA显卡驱动...
  13. nod32Android版用户名及密码,最新nod32官方升级id和账号用户名密码
  14. 如何设计网页排版和样式 - 前端页面设计
  15. 电子线路设计技巧5:CDRH系列贴片电感
  16. 一起捉妖 ios12.3更新了location不用了 怎么办
  17. XYNUOJ Six Degrees of Separation
  18. 主动笔驱动芯片市场现状及未来发展趋势
  19. 基于单片机的红外遥控密码锁系统设计(#0407)
  20. log 的抓取与分析

热门文章

  1. 关于.NET技术体系的思维导图
  2. python3 subprocess_Python 3.4.3 subprocess.Popen获取命令输出而不管道?
  3. linux 排程命令,Ubuntu 排程設定 :Crontab 排程使用教學
  4. 5添加一块盘_win系统,Linux系统,重装系统后,添加盘简易教程
  5. iOS获取最上层控制器
  6. python同步异步_python中Tornado的同步与异步I/O的介绍(附示例)
  7. 贵港职称计算机,2015广西职称计算机考试报名:贵港职称计算机报名入口
  8. UnicodeEncodeError: 'gbk' codec can't encode character '\U0001f349' in position 64: illegal multibyt
  9. php索引数组转键数组,php索引数组和关联数组
  10. 推荐7本EEG领域值得阅读的书籍