单例模式是常见的设计模式之一:目的是节省内存,限制了实例的个数;有利于java GC回收机制。

单例模式的三个好处:

1.控制资源的使用,通过线程同步来控制资源的并发访问

2.控制实例的产生个数,来达到节约资源的目的

3.作为通信媒介使用,在不建立连接的情况下,让两个不先关的进程和线程之间实现通信

单例模式分类: 饿汉模式(在类加载时便会创建对象);

懒汉模式(在外部第一次请求实例时才会创建实例);

登记式模式

单例模式特点:

1.单例类只有一个实例

2.单例类必须自己创建自己唯一的实例

3.单例类必须自己给其他类提供这一实例

1.懒汉模式:类加载时不会初始化,当外部第一次请求实例时才会创建实例;而且第一次创建后不在创建该实例;

特点是:运行时获取对象的速度比较慢,但加载的时候比较快,它在整个生命的应用周期只占用一部分资源

//单例模式-懒汉式单例

public classLazySingleton {//私有静态对象,加载时候不做初始化

private static LazySingleton jjy=null;//私有构造方法,避免外部创建实例

privateLazySingleton(){}/*** 静态工厂方法,返回此类的唯一实例.

* 当发现实例没有初始化的时候,才初始化.

*@returnLazySingleton*/

synchronized public staticLazySingleton getJjy(){if(jjy==null){

jjy=newLazySingleton();

}returnjjy;

}

}

2.饿汉模式:类加载时就会初始化,创建实例;

特点是:运行时获取对象速度比较快,但加载时速度比较慢,会一直占用资源  (程序打开加载比较慢,但运行速度快---从用户体验角度来说推荐饿汉)

//单例模式-饿汉式单例

public class EagerSingleton {

//私有静态对象,加载时候不做初始化

private static EagerSingleton jjy=new EagerSingleton();

// 私有构造方法,避免外部创建实例

private EagerSingleton(){}

/**

* 静态工厂方法,返回此类的唯一实例.

*

*

*/

synchronized public static EagerSingleton getJjy(){

return jjy;

}

}

使用场景:数据库连接池;网站计数器;

java 线程安全的单例_线程安全的单例模式的几种实现相关推荐

  1. python线程安全的单例_[python笔记] 单例的几种实现方式(线程安全)

    单例实现方式: 1.单例装饰器; 2.使用类: 3.使用元类 1.单例装饰器(非线程安全) 通过装饰器使一个类变成单例类,但是并非线程安全的,多线程状态下,每个线程创建不同的实例,因为没有加线程锁,所 ...

  2. java双重检查锁单例真的线程安全吗?

     相信大多数同学在面试当中都遇到过手写单例模式的题目,那么如何写一个完美的单例是面试者需要深究的问题,因为一个严谨的单例模式说不定就直接决定了面试结果,今天我们就要来讲讲看似线程安全的双重检查锁单例模 ...

  3. java枚举来实现单例_枚举实现单例模式

    Java中的枚举和其它语言不同,它是一个对象.早期的 Java 是没有枚举类型的大家都用类似于单例的方式来实现枚举,简单的说就是让构造 private 化,在 static 块中产生多个 final ...

  4. python线程安全的单例_详解python实现线程安全的单例模式

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  5. java singleton 多线程_Java创建线程安全的单例singleton

    Java创建线程安全的单例 单例的使用场景 JVM中仅需要一个实例,因此能节省内存,加快访问速度,比如数据库连接池,计数器等.Spring 中的Bean,默认也是单例的,共享资源的访问,比如日志文件, ...

  6. 面试官:不使用synchronized和lock,如何实现一个线程安全的单例?

    单例,大家肯定都不陌生,这是Java中很重要的一个设计模式.稍微了解一点单例的朋友也都知道实现单例是要考虑并发问题的,一般情况下,我们都会使用synchronized来保证线程安全. 那么,如果有这样 ...

  7. 面试官真是搞笑!让实现线程安全的单例,又不让使用synchronized!

    单例模式,是Java中比较常见的一个设计模式,也是我在面试时经常会问到的一个问题. 经过我的初步统计,基本上有60%左右的人可以说出2-4种单例的实现方式,有40%左右的人可以说出5-6种单例的实现方 ...

  8. java 内部类 单例_确保对象的唯一性——单例模式 (四):一种更好的单例实现方法(静态内部类)...

    3.5 一种更好的单例实现方法 饿汉式单例类不能实现延迟加载,不管将来用不用始终占据内存:懒汉式单例类线程安全控制烦琐,而且性能受影响.可见,无论是饿汉式单例还是懒汉式单例都存在这样那样的问题,有没有 ...

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

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

最新文章

  1. android免root兼容所有版本ui调试工具
  2. vs code python_用VScode配置Python开发环境
  3. RabbitMQ(二):Work Queues、循环分发、消息确认、持久化、公平分发
  4. HDU - 5176 The Experience of Love(并查集)
  5. 小程序制作回到顶部按钮
  6. 计算机跨专业专插本学音乐,欢迎投稿丨专插本可以跨专业考,只要肯坚持!
  7. ArrayList(Map(k v))相关操作和遍历
  8. 虚拟函数-1、静态联编与动态联编,引入虚函数
  9. Mac常用测试工具环境变量配置
  10. C语言物流管理运输系统
  11. 关于2023计算机408考研
  12. JavaScript模式(1):字面量和构造函数
  13. 学一点Wi-Fi:Roaming
  14. 英特尔芯片组系列 服务器,Intel 7系列芯片组正式发布 不同型号解析
  15. 使用tkinter实现 loading 等待效果
  16. java鼠标左键点击四溅,重生之我是一只鼠
  17. 中国市场 Android App 兼容性报告
  18. OpenWrt一些小问题的解决方法
  19. Filter的过滤器链
  20. 国际金融——我国服务贸易逆差的成因及对策研究

热门文章

  1. Java中的定制国际化(i18n)
  2. python无法安装pycurl_Python安装pycurl失败的解决方法
  3. HH SaaS电商系统的仓储系统设计
  4. nginx fastcgi python_Nginx + webpy 和FastCGI搭建webpy环境
  5. Web和HTTP基本术语和概念
  6. oracle utl inaddr,oracle11g之ACL拙见
  7. 同时防服务器维修,加强服务器日常运维,避免宕机灾难发生
  8. 为什么学习C语言这么久,看的懂代码,做不出题,写不出来项目?
  9. 字符斜杠是合法常量吗_【面试秘籍】你对String的intern方法了解吗
  10. java map 如何根据key获得对象_ThreadLocal:Java中的影分身