五种实现方式:

//create instance with loading class.it's better to create instance the when you// will use.the instance should not be heavy and use possiblely.

在类加载到jvm初始化的时候创建对象,如果实例比较大,会影响性能。

class Singleton1{

private static final Singleton1 instance = new Singleton1();
private Singleton1(){

}
public static Singleton1 getInstance(){
return instance; 
}
}

//double check. 对Singleton2的class对象加锁。
class Singleton2{
private static Singleton2 instance;
private Singleton2(){

}
public static Singleton2 getInstance(){
if(instance == null){
synchronized(Singleton2.class){
if(instance == null){
instance = new Singleton2();
}
}
}
return instance;
}

}
//静态内部类使用,延迟实例化对象。在使用时创建而不是在类加载初始化创建。
class Singleton3{
private Singleton3(){
}
private static class Instance{
private static final Singleton3 instance = new Singleton3();
private Instance(){}
}
public static Singleton3 getInstance(){
return Instance.instance;
}
}
//can't clone and serializable.recommend use. 避免克隆和反序列化得到不同实例对象。
enum Singleton4{
INSTANCE;
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
}
//use in single thread 适用单线程
class Singleton5{
private static Singleton5 instance;
private Singleton5(){

}
public static Singleton5 getInstance(){
if(instance == null){
instance = new Singleton5();
}
return instance;
}
}
同步方法性能受到影响,适用于调用次数不多的情况。
class Singleton6{
private static Singleton6 instance;
private Singleton6(){

}
public static synchronized Singleton6 getInstance(){
if(instance == null){
instance = new Singleton6();
}
return instance;
}
}

java单例模式(下)相关推荐

  1. Java单例模式个人总结(实例变量和类变量)

    Java单例模式 背景知识:Static关键字. 在对于定义类的变量,分为两种,是否具有static修饰的变量: 没有static修饰的变量,通过类的实例化(对象)引用,改变量称为实例变量: 使用st ...

  2. 对Java单例模式 volatile关键字作用的理解

    单例模式是程序设计中经常用到的,简单便捷的设计模式,也是很多程序猿对设计模式入门的第一节课.其中最经典的一种写法是: class Singleton {private volatile static ...

  3. Java 单例模式探讨

    以下是我再次研究单例(Java 单例模式缺点)时在网上收集的资料,相信你们看完就对单例完全掌握了 Java单例模式应该是看起来以及用起来简单的一种设计模式,但是就实现方式以及原理来说,也并不浅显哦. ...

  4. Java 单例模式:懒加载(延迟加载)和即时加载

    Java 单例模式:懒加载(延迟加载)和即时加载 引言 在开发中,如果某个实例的创建需要消耗很多系统资源,那么我们通常会使用惰性加载机制(或懒加载.延时加载),也就是说只有当使用到这个实例的时候才会创 ...

  5. Java单例模式:为什么我强烈推荐你用枚举来实现单例模式

    写在前面--原作的这篇文章真的写的非常的简洁,逻辑清晰,将Java单例模式的各种写法写的非常清楚,并介绍了用枚举实现单例的最佳实践. 单例模式简介 单例模式是 Java 中最简单,也是最基础,最常用的 ...

  6. 什么是java单例模式?

    关于java单例模式的文章早已是非常多了,本文是对我个人过往学习java,理解及应用java单例模式的一个总结.此文内容涉及java单例模式的基本概念,以及什单例模式的优缺点,希望对大家有所帮助. 什 ...

  7. java单例模式_无名小仙男

    单例模式就是有且仅有一个实例化对象.这有什么用处呢?其实有一些对象我们只需要一个,比如说:线程池.缓存.对话框.处理偏好设置和注册表的对象.日志对象.充当打印机显卡等设备的驱动程序的对象.事实上,这些 ...

  8. OkHttp实现多线程断点续传下载,单例模式下多任务下载管理器,一起抛掉sp,sqlite的辅助吧

    丨版权说明 :<OkHttp实现多线程断点续传下载,单例模式下多任务下载管理器,一起抛掉sp,sqlite的辅助吧>于当前CSDN博客和乘月网属同一原创,转载请说明出处,谢谢. 最近项目需 ...

  9. Java单例模式推荐写法-双重检测机制实现单例模式

    本文为joshua317原创文章,转载请注明:转载自joshua317博客 Java单例模式推荐写法-双重检测机制实现单例模式 - joshua317的博客 Java单例模式推荐写法--双重检测机制实 ...

  10. 第十四节: 介绍四大并发集合类并结合单例模式下的队列来说明线程安全和非安全的场景及补充性能调优问题。...

    一. 四大并发集合类 背景:我们目前使用的所有集合都是线程不安全的 . A. ConcurrentBag:就是利用线程槽来分摊Bag中的所有数据,链表的头插法,0代表移除最后一个插入的值. (等价于同 ...

最新文章

  1. 【C++】重载运算符(一)
  2. python爬虫 智联招聘 工作地点
  3. python使用pickle保存和加载机器学模型
  4. xml publisher 笔记
  5. 速读训练软件_记忆力训练:如何提高注意力呢?
  6. IBM推荐的Eclipse的阅读清单(备忘)
  7. 运行gclient一直没反应_IC厌氧反应器的调试-温度影响
  8. oracle中的 expdp命令,Oracle 10G 数据泵中EXPDP命令行选项介绍
  9. pytorch对数据集进行重新采样
  10. ReportView使用
  11. windows卸载linux系统,Windows和Linux双系统下完美卸载linux
  12. 基于C#的在线语音识别软件开发
  13. Linux efi分区被删除了,如何恢复意外删掉的EFI系统分区
  14. 计算机怎么看事件管理,用事件查看器查看电脑使用记录
  15. Android Dialog之间的层级设置(WindowManager.LayoutParams)
  16. 读书笔记2014第6本:《The Hunger Games》
  17. Flutter 错误解决Building with plugins requires symlink support.
  18. python中文件读写mode参数
  19. scp的用法,包括windows和linux
  20. 《易经》全文翻译(值得收藏)

热门文章

  1. 时光里,我一个人的碎碎念。
  2. JVM 精华知识点汇总
  3. qt构建浏览器_如何为组织构建安全的浏览器
  4. 戴尔笔记本电脑怎下载c语言,戴尔笔记本电脑如何下载驱动
  5. 线性丢番图方程 --算法竞赛专题解析(21):数论
  6. java 判断对象中所有属性都为空
  7. 自动适配跳转电脑PC端和手机WAP端
  8. [阿里云RocketMQ_Exception]valid resource owner failed.
  9. 第43届ACM icpc亚洲区域赛焦作站感想
  10. Python 计算两个连通子图距离_复杂网络分析之python利器NetworkX