设计延迟加载的“单例设计模式”
今天看毕老师的线程部分,学到了如何设计延迟加载的单例设计模式;
单例设计模式分两种:
1、饿汉模式
2、懒汉模式
先上饿汉式代码:
// 饿汉式 class Single{ private static final Single s = new Single(); private Single(){} public static Single getInstance(){ return s; } }
饿汉模式,在私有化类的时候就加载了实例,这种模式对资源消耗较大,所以衍生出了懒汉模式;
接下来懒汉式:
// 懒汉式 class Single{ private static final Single s = null; private Single(){} public static Single getInstance(){ // Single 前面加上 synchronized 可以解决安全隐患的问题,但是比较低效 // 使用同步代码块,解决效率问题,由于是静态方法,不能写this,所以“锁”要用 Single.class if( s == null){ // 使用双重判断,解决效率问题 synchronized(Single.class){ if( s == null ){ s = new Single(); // 对象实例化被延迟 } } } } }
懒汉式特点:实例会延迟加载。
存在问题:
如果多线程访问时,会出现安全隐患;
解决方法:此时要使用同步代码块包裹实例化代码,但是稍微低效,可以用双重if判断,解决效率问题
使用的锁:是用该类所属的字节码为对象锁;
转载于:https://www.cnblogs.com/jackchiang/archive/2007/07/12/4585236.html
设计延迟加载的“单例设计模式”相关推荐
- java 单例设计_Java 之单例设计模式
设计模式: 对问题行之有效的解决方式, 其实它是一种思想. 单例设计模式 解决的问题:就是可以保证一个类在内存中的对象唯一性. 即单个实例. 比如对于A 和 B 两个程序使用同一个配置信息对象时, A ...
- java设计扑克牌比大小_2019-08-09Day10 单例设计模式,扑克牌比大小游戏(Java)
目的 学习了解单例设计模式的相关知识,并在前几天Java学习的基础上,完善所学的知识,完成扑克牌比大小的游戏,能实现的功能有,游戏显示页面,玩家信息页面(包括玩家姓名 编号 所持有的资金),生成一副扑 ...
- AJPFX关于单例设计模式
单例设计模式优势:保证一个类在内存中的对象唯一性. 比如:多程序读取一个配置文件时,建议配置文件封装成对象.会方便操作其中数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中 ...
- 小看--单例设计模式
(一)单例设计描述 只要了解过设计模式的同学都会知道:单例设计模式,大家都知道单例设计模式是一种创建行的设计模式.既然是创建型,那么先来讲讲,对象的创建的过程吧. --静态成员:静态成员在程序加载的时 ...
- GOF设计模式之1:单例设计模式
1.单例设计模式核心作用: 保证一个类只有一个实例,并且提供了访问该实例的全局访问点 2.常见应用场景: window的任务管理器 项目中读取配置文件一般也是一个单例模式 数据库连接池的设计也是采用单 ...
- 详解:设计模式之-单例设计模式
分享一波:程序员赚外快-必看的巅峰干货 前言 近期预计1-2周左右会更新设计模式专题文章. 单例设计模式:保证在一个JVM中,只能存在一个实例. 应用场景:Servlet,Spring IOC,线程池 ...
- static应用知识:单例设计模式
1.什么是设计模式(Design pattern) 开发中经常遇到一些问题,一个问题通常有n种解法的,但其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式. 设计模式有20多种, ...
- C++11标准下的单例设计模式
单例设计模式 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 为什么会产生设计模式这样的东西呢? 使用设计模式的目的:为了代码可重用性.让代码 ...
- Java设计模式—单例设计模式(Singleton Pattern)完全解析
转载请注明出处:http://blog.csdn.net/dmk877/article/details/50311791 相信大家都知道设计模式,听的最多的也应该是单例设计模式,这种模式也是在开发中用 ...
最新文章
- linux系统调用(syscall)原理
- CVPR 2021 比CNN和Transformer更好的Backbone?伯克利谷歌提出BoTNet,精度达84.7%
- boost::contract模块实现vector的测试程序
- linux 测试程序性能,推荐一款Linux系统的性能测试软件
- 中科院大学计算机研究生考试大纲,中国科学院大学《计算机原理》2019年硕士研究生入学考试大纲...
- Linux源码Kconfig文件语法分析
- Oracle的sql开发之包技术实战
- LG-Transformer:全局和局部建模Transformer结构新作
- linux乱码的文件怎么删除,如何删除Linux的乱码文件
- VS2012 ffmpeg 没有定义的lrint
- 算法题在我看来都是小意思
- 企业信息化之“请纵向排队”
- SQLServer之删除用户自定义数据库用户
- android json解析歌词,网易云歌词获取
- 阿里笔试——北京阿里笔试题总结
- Multisim简体中文汉化包下载安装指南
- linux 计划任务的使用
- html动画页面源码,9款超炫HTML5最新动画源码
- 360一键root su浅析
- 韩媒批其国民都沉迷“美色” 娱乐产业是起因
热门文章
- CPU time与WALL time
- y460安装的ubuntu开机时笔记本键盘失效的问题
- python调用stanfordNLP的NER接口
- 大佬对协程以及try except的详细解释
- 布朗语料库中不同部分的情态动词频率直方图绘制的代码详细解释
- 华为可以分屏吗_华为手机经常弹出“系统更新”提示,可以不更新吗?看完涨知识了...
- 计算机主板硬件术语,电脑硬件扫盲帖---主板术语详解
- mysql慢查询检查流程_简单谈谈MySQL优化利器-慢查询
- js面向对象-组合使用构造函数模式和原型模式(使用最广泛、认同度最高)
- pt-online-schema-change 在线修改表结构