Holder 方式的单例
一 点睛
Hold 方式的单例完全是借助了类加载的特点。
二 代码
package singleton.singleton3;// final 不允许继承
public final class Singleton {// 实例变量private byte[] data = new byte[1024];private static Singleton instance = null;private Singleton() {System.out.println("+++++");}// 在静态内部类中持有 Singleton 的实例,并且可被直接初始化private static class Holder {private static Singleton instance = new Singleton();}// 向 getInstance 方法加入同步控制,每次只能有一个线程能进入public static Singleton getInstance() {return Holder.instance;}public static void main(String[] args) {System.out.println(Singleton.getInstance());}
}
三 测试结果
+++++
singleton.singleton3.Singleton@7a81197d
如果注释掉 System.out.println(Singleton.getInstance()); 则什么都不打印。
四 说明
在 Singleton 类中并没有 instance 的静态成员,而是将其放入到了静态内部类 Holder 中,并不会创建 Singleton 的实例,Holder 类中定义了 Singleton 的静态方法,并且直接进行了实例化,当 Holder 被主动引用的时候则会创建 Singleton 的实例,Singleton 实例的创建过程在 Java 程序编译时期收集到 <clinit>() 方法中,该方法是同步方法,可以保证内存的可见性、JVM 指令的顺序性和原子性、Holder 方式的单例设计是最好的设计之一,也是目前使用比较广的设计之一。
Holder 方式的单例相关推荐
- 公共类java连接数据库_JDBC 建立连接公共操作类(静态方式与单例方式)
package com.ighost.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql. ...
- java中单例实现常用的方式_Java单例的常见形式
Java单例的常见形式 本文目的:总结Java中的单例模式 本文定位:学习笔记 学习过程记录,加深理解,便于回顾.也希望能给学习的同学一些灵感 一.非延迟加载单例类 public class Sing ...
- Swift中编写单例的正确方式
本文由CocoaChina译者leon(社区ID)翻译自krakendev 原文:THE RIGHT WAY TO WRITE A SINGLETON 转载请保持所有内容和链接的完整性. 在之前的帖子 ...
- python线程安全的单例_[python笔记] 单例的几种实现方式(线程安全)
单例实现方式: 1.单例装饰器; 2.使用类: 3.使用元类 1.单例装饰器(非线程安全) 通过装饰器使一个类变成单例类,但是并非线程安全的,多线程状态下,每个线程创建不同的实例,因为没有加线程锁,所 ...
- 关于“如何破坏单例“我说了好几种方式,面试官却说:我其实随便问问,没想到你真会
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.是一种创建型设计模式.他的定义为:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式一般体现在类声明中 ...
- 关于如何破坏单例我说了好几种方式,面试官却说:我其实随便问问,没想到你真会...
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.是一种创建型设计模式.他的定义为:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式一般体现在类声明中 ...
- python3的配置文件类单例实现_单例模式的几种实现方式及对比
来源:博客园 作者:为何不是梦 链接:https://www.cnblogs.com/ibigboy/p/11423613.html 所谓单例就是在系统中只有一个该类的实例. 单例模式的核心分以下三个 ...
- 【设计模式】单例(Singleton)
在众多的设计模式中单例应该是最常见的设计模式了,对于一名初级工程师来说,这个设计模式可能是自己唯一能够拿的出手的设计模式.那么什么是单例模式呢?顾名思义单例就是单个实例,也就是说在整个类的使用中只允许 ...
- 在Python中创建单例
这个问题不是为了讨论是否需要单例设计模式 ,是否是反模式,还是针对任何宗教战争,而是要讨论如何以最pythonic的方式在Python中最好地实现此模式. 在这种情况下,我定义"最pytho ...
最新文章
- 【译】ICO 2.0 — The Advent of What Crypto-Fund Raising Should Really Look Like
- 几种常见的用于拟合的分布
- http请求过程 Android,android HTTP网络请求回顾
- QT的QImage类的使用
- 为什么使用ES6生成器
- 关于停止发表“每周新闻回顾”的通知
- 日期控件的使用 c# 114867852
- 什么叫python代码的优化_优化Python代码
- 利用truffle与智能合约进行交互
- BytePS源码解析
- PLSQL配置Oracle 64位
- springboot 代码自动生成器
- AXure破解授权码
- 用python制作上海疫情评论词云图-自定义形状
- 几个著名的心理学实验
- (转)Django新手需要注意的10个要点
- noip普及组 c语言,厉害了,NOIP普及组竟然这样出题,你会做吗?
- 获取网页上没有下载链接的视频音频资源 火狐浏览器插件 Video DownloadHelper
- vecloud php,GitHub - YanzhaoMa/APICloud-PHP-SDK
- 运放的防护,如何避免电气过载(ESO)
热门文章
- 译(自编码器) Hinton2006---Reducing the Dimensionality of Data with Neural Networks
- 机器学习之概率论与数理统计基础知识-(2)随机变量和数字特征
- [博学谷学习记录]超强总结,用心分享|第07节 常用的API-----笔记篇
- 2021年需要关注的15大软件测试趋势(一)
- RAM和ROM存储空间的混合
- python小玩意——抠图换背景
- 两台电脑如何共享文件?如何互相传输文件?
- 为什么说中小学编程教育是创新思维体操
- mongo从开始到安装以及遇到的问题
- zabbix_sender用法实例