2.1.1 单例模式
一种对象创建模式,确保系统中的一个类只产生一个实例

两大好处:

1.对于频繁使用的对象,可以减少创建的系统开销
2.减轻GC压力,缩短GC停顿时间

参与者:
单例类,提供单例的工厂
使用者,获取并使用单例

第一种:

首先,单例类必须要有一个private访问级别的构造函数,其次instance变量和getInstance()必须是static的

无法对instance延迟加载,由于instance是static,因此JVM加载单例类时就创建

public class Singleton{
     private Singleton(){}
     private static Singleton instance = new Singleton();
     public static Singleton getInstance(){
          return instance;
     }
}

第二种:

在getInstance()中创建instance,需要对getInstance()加同步关键字synchronized
在多线程中时耗远高于第一种,但可以延迟加载

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

第三种:

使用内部类维护单例,既可以延迟加载又不必使用同步关键字
public class Singleton{
     private Singleton(){}
     private static class SingletonHolder{                           //加了static外围类才能访问到instance
          private static Singleton instance = new Singleton();     //这个static是因为只能存在一个instance
     }
     public static Singleton getInstance(){
          return SingletonHolder.instance;
     }
}



阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013089991/article/details/52347393
文章标签: Java程序性能优化
个人分类: Java程序性能优化
想对作者说点什么? 我来说一句

单例模式单例模式单例模式

2011年07月31日 467KB 下载

研磨单例模式研磨单例模式

2010年12月15日 123KB 下载

jQuery 2.1.1 官方正式版

2015年03月07日 489KB 下载

Multicraft 2.1.1破解版(Linux)

2017年03月08日 32.5MB 下载

2.1.1版本的NPOI以及示例

2016年04月07日 10.9MB 下载

vmware unlocker-2.1.1安装MacOs

2017年11月08日 15.45MB 下载

单例模式(讲解单例模式)

2011年01月18日 317KB 下载

Unlocker2.1.1 for VMware

2017年10月22日 15.44MB 下载

Java单例模式(DOC)

2009年10月21日 91KB 下载

php单例模式和工厂模式

2009年05月22日 54KB 下载

没有更多推荐了,返回首页

不良信息举报

2.1.1 单例模式

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭