java两种不同单例模式_关于Java里的两种单例模式
没有系统学习过设计模式,只是项目中遇到一些常用的。单例模式就是最常用的之一了,还以为无非就那样的,原来单例模式的种类也有很多,不过现在我经常用到的就这两种。还有别的比如登记式单例是通过工厂方法来获得单例对象。
根据加载方式的不同:
1、饿汉式(别问我为什么叫这个名字我也不知道)
public class EagerSigleton{
private static final EagerSigleton instance=new EagerSigleton();
private EagerSigleton(){}私有构造方法
public EagerSigleton getInstance(){//静态方法
return instance;
}
}
2、懒汉式
public class LazySigleton{
private static final LazySigleton instance=null;
private LazySigleton(){}//私有构造函数
public synchronized LazySigleton getInstance(){//静态工厂方法,注意这里的synchronized
if(instance==null){
instance=new LazySigleton();
}
return instance;
}
}
饿汉式是在类装载时直接得到该类的实例,可以说式前期绑定的。而懒汉式在类加载时并没有指向具体的某个对象。而是当调用get方法后才被实例化。因此,前者速度快,后者速度慢。
无非要注意的一点就是 懒汉式在多线程环境要加synchronized关键字,防止创建多个实例。
读过这一篇博客,自己按照博客中的代码验证了一下,和博主所说一样,但是我还没有研究jvm那么深,所以暂且不提。
不过我认为,既然java垃圾回收是回收“不可达的对象”,这样以来,即使当前单例对象全部在Tenured区域,也是不会回收的吧,但是加上根集和最长未使用算法,就不得而知了。
java两种不同单例模式_关于Java里的两种单例模式相关推荐
- 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目
王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...
- java中的单例_细说Java中的几种单例模式
在Java中,单例模式分为很多种,本人所了解的单例模式有以下几种,如有不全还请大家留言指点: 饿汉式 懒汉式/Double check(双重检索) 静态内部类 枚举单例 一.饿汉式 image 饿汉式 ...
- java中日期比较方法_在java中进行日期时间比较的4种方法
1. Date.compareTo() java.util.Date 提供了在 Java 中比较两个日期的经典方法compareTo(). 如果两个日期相等,则返回值为0. 如果Date在date参数 ...
- java ee 的使用方法_改善Java EE生产支持技能的8种方法
java ee 的使用方法 参与Java EE生产支持的每个人都知道这项工作可能很困难. 7/24寻呼机支持,多个事件和错误修复(要定期处理),来自客户和管理团队的压力,要求它们尽快解决生产问题并防止 ...
- Java如何让小球随机运动_用java模拟两球的随机运动及碰撞
前面已经实现了一个球在一个窗口中随机运动,下面将在前面的基础上实现两个球的随机运动及碰撞,此次的代码中用到的算法参考了Twinsen写的一文中关于两球碰撞时的算法.程序仍旧有两个类,一个Ball类,一 ...
- java jsp取静态常量_获取java静态
Android NDK开发系列教程4:对类变量进行操作 终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~ 通常我们 ...
- java 多态判断非空_收藏Java 面试题全梳理
脚本之家 你与百万开发者在一起 来源 | Java建设者(ID:javajianshe) 作者 |cxuan 如若转载请联系原公众号 Java 基础篇 Java 有哪些特点 并发性的:你可以在其中执行 ...
- java为什么用工厂模式_【Java】为什么建议没事不要随便用工厂模式创建对象?...
一般情况下,工厂模式分为三种更加细分的类型:简单工厂.工厂方法和抽象工厂.在这三种细分的工厂模式中,简单工厂.工厂方法原理比较简单,在实际的项目中也比较常用.而抽象工厂的原理稍微复杂点,在实际的项目中 ...
- java课后习题七解析_《Java基础入门》_课后习题解析.doc
<Java基础入门>_课后习题解析 <Java基础入门>课后习题 Java开发入门 一.填空题 1.Java的三大体系分别是_JavaSE_____._JavaEE_____. ...
- java课后习题及答案_《java基础入门》课后习题及答案.doc
<java基础入门>课后习题及答案.doc <Java 基础入门>课后习题及答案博学谷--让 IT 教学更简单,让 IT 学习更有效<Java 基础入门> 课后习题 ...
最新文章
- JavaScript初学者编程题(7)
- 人群密度估计--Crowd Counting Via Scale-adaptive Convolutional Nerual Network
- 连接MySQL的10060错误:Can't connect to MySQL server on '*.*.*.*'(10060)
- openstack 网络
- C语言 | C51实现MAX485通信(完整源代码)
- nDPI-dev分析
- python8个程序语言_所有程序员必知--2019年最流行的8种编程语言和框架
- matlab 过度曝光,MATLAB:补偿图像处理中的过度曝光/过饱和度
- 安装SQL2000时弹出“以前的某个程序安装已在安装计算机上创建挂起的文件操作、、、”...
- paip.android APK安装方法大总结系统应用的安装
- 数据库学习一站式入门资料(纯干货)
- 漏洞补丁在线更新失败或软件安装提示ERROR的解决方案
- MAC开机启动项学习笔记
- CuteHttpFileServer: 一键搭建文件共享服务器
- C++包含文字时的输出排版问题
- 〖大学生·技术人必学的职业规划白宝书 - 职业规划篇①〗- 大学生选择职业前的自我认知与剖析
- 行业分析-全球与中国引风机市场现状及未来发展趋势
- C# WPF动点任意移动气泡画法(解决方案使用到数学勾股定理、正弦定理、向量知识)。
- html中点击提交按钮显示提交i成功,百里香叶:点击提交按钮后显示成功信息
- 计算机技术在中医药中的应用,计算机药物虚拟筛选技术在中医药领域中的应用前景...
热门文章
- 【Flink】Flink KeyGroupRange {startKeyGroup=7,endKeyGroup=12} does not contain key group 45
- 【git】git 使用 Submodule 管理子模块 报错 pathspec did not match any files
- 【Elasticsearch】Elasticsearch 7.6 IDEA 源码环境搭建
- 【Java】44个Java代码性能优化总结
- 95-134-112-源码-维表-全量加载MySQL
- 【Docker】Docker 一个偶现的错误 bash命令突然找不到
- 【CDH】 kafkaServer-gc.log日志太多
- 《spring-boot学习》-08-spring boot 优雅的使用mybatis
- linux ls 目录结构,linux 系统目录结构 ls命令 文件类型 alias命令
- python如何将数据保存到本地json文件