没有系统学习过设计模式,只是项目中遇到一些常用的。单例模式就是最常用的之一了,还以为无非就那样的,原来单例模式的种类也有很多,不过现在我经常用到的就这两种。还有别的比如登记式单例是通过工厂方法来获得单例对象。

根据加载方式的不同:

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里的两种单例模式相关推荐

  1. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  2. java中的单例_细说Java中的几种单例模式

    在Java中,单例模式分为很多种,本人所了解的单例模式有以下几种,如有不全还请大家留言指点: 饿汉式 懒汉式/Double check(双重检索) 静态内部类 枚举单例 一.饿汉式 image 饿汉式 ...

  3. java中日期比较方法_在java中进行日期时间比较的4种方法

    1. Date.compareTo() java.util.Date 提供了在 Java 中比较两个日期的经典方法compareTo(). 如果两个日期相等,则返回值为0. 如果Date在date参数 ...

  4. java ee 的使用方法_改善Java EE生产支持技能的8种方法

    java ee 的使用方法 参与Java EE生产支持的每个人都知道这项工作可能很困难. 7/24寻呼机支持,多个事件和错误修复(要定期处理),来自客户和管理团队的压力,要求它们尽快解决生产问题并防止 ...

  5. Java如何让小球随机运动_用java模拟两球的随机运动及碰撞

    前面已经实现了一个球在一个窗口中随机运动,下面将在前面的基础上实现两个球的随机运动及碰撞,此次的代码中用到的算法参考了Twinsen写的一文中关于两球碰撞时的算法.程序仍旧有两个类,一个Ball类,一 ...

  6. java jsp取静态常量_获取java静态

    Android NDK开发系列教程4:对类变量进行操作 终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~ 通常我们 ...

  7. java 多态判断非空_收藏Java 面试题全梳理

    脚本之家 你与百万开发者在一起 来源 | Java建设者(ID:javajianshe) 作者 |cxuan 如若转载请联系原公众号 Java 基础篇 Java 有哪些特点 并发性的:你可以在其中执行 ...

  8. java为什么用工厂模式_【Java】为什么建议没事不要随便用工厂模式创建对象?...

    一般情况下,工厂模式分为三种更加细分的类型:简单工厂.工厂方法和抽象工厂.在这三种细分的工厂模式中,简单工厂.工厂方法原理比较简单,在实际的项目中也比较常用.而抽象工厂的原理稍微复杂点,在实际的项目中 ...

  9. java课后习题七解析_《Java基础入门》_课后习题解析.doc

    <Java基础入门>_课后习题解析 <Java基础入门>课后习题 Java开发入门 一.填空题 1.Java的三大体系分别是_JavaSE_____._JavaEE_____. ...

  10. java课后习题及答案_《java基础入门》课后习题及答案.doc

    <java基础入门>课后习题及答案.doc <Java 基础入门>课后习题及答案博学谷--让 IT 教学更简单,让 IT 学习更有效<Java 基础入门> 课后习题 ...

最新文章

  1. JavaScript初学者编程题(7)
  2. 人群密度估计--Crowd Counting Via Scale-adaptive Convolutional Nerual Network
  3. 连接MySQL的10060错误:Can't connect to MySQL server on '*.*.*.*'(10060)
  4. openstack 网络
  5. C语言 | C51实现MAX485通信(完整源代码)
  6. nDPI-dev分析
  7. python8个程序语言_所有程序员必知--2019年最流行的8种编程语言和框架
  8. matlab 过度曝光,MATLAB:补偿图像处理中的过度曝光/过饱和度
  9. 安装SQL2000时弹出“以前的某个程序安装已在安装计算机上创建挂起的文件操作、、、”...
  10. paip.android APK安装方法大总结系统应用的安装
  11. 数据库学习一站式入门资料(纯干货)
  12. 漏洞补丁在线更新失败或软件安装提示ERROR的解决方案
  13. MAC开机启动项学习笔记
  14. CuteHttpFileServer: 一键搭建文件共享服务器
  15. C++包含文字时的输出排版问题
  16. 〖大学生·技术人必学的职业规划白宝书 - 职业规划篇①〗- 大学生选择职业前的自我认知与剖析
  17. 行业分析-全球与中国引风机市场现状及未来发展趋势
  18. C# WPF动点任意移动气泡画法(解决方案使用到数学勾股定理、正弦定理、向量知识)。
  19. html中点击提交按钮显示提交i成功,百里香叶:点击提交按钮后显示成功信息
  20. 计算机技术在中医药中的应用,计算机药物虚拟筛选技术在中医药领域中的应用前景...

热门文章

  1. 【Flink】Flink KeyGroupRange {startKeyGroup=7,endKeyGroup=12} does not contain key group 45
  2. 【git】git 使用 Submodule 管理子模块 报错 pathspec did not match any files
  3. 【Elasticsearch】Elasticsearch 7.6 IDEA 源码环境搭建
  4. 【Java】44个Java代码性能优化总结
  5. 95-134-112-源码-维表-全量加载MySQL
  6. 【Docker】Docker 一个偶现的错误 bash命令突然找不到
  7. 【CDH】 kafkaServer-gc.log日志太多
  8. 《spring-boot学习》-08-spring boot 优雅的使用mybatis
  9. linux ls 目录结构,linux 系统目录结构 ls命令 文件类型 alias命令
  10. python如何将数据保存到本地json文件