Java程序性能优化-单例模式(1)单例模式( )
单例模式是设计模式中使用最为普遍的模式之一 它是一种对象创建模式 用于产生一个对象的具体实例 它可以确保系统中一个类只产生一个实例 在Java语言中 这样的行为能带来两大好处
( )对于频繁使用的对象 可以省略创建对象所花费的时间 这对于那些重量级对象而言 是非常可观的一笔系统开销
( )由于new操作的次数减少 因而对系统内存的使用频率也会降低 这将减轻GC压力 缩短GC停顿时间
因此对于系统的关键组件和被频繁使用的对象 使用单例模式便可以有效地改善系统的性能
单例模式的参与者非常简单 只有单例类和使用者两个 如表 所示
表单例模式角色
它的基本结构如图 所示
图单例模式类图
单例模式的核心在于通过一个接口返回唯一的对象实例 一个简单的单例实现如下
public class Singleton {
private Singleton(){
System out println( Singleton is create ) //创建单例的过程可能会比较慢
}
private static Singleton instance = new Singleton()
public static Singleton getInstance() {
return instance;
}
}
注意代码中的重点标注部分 首先单例类必须要有一个private访问级别的构造函数 只有这样 才能确保单例不会在系统中的其他代码内被实例化 这点是相当重要的 其次 instance成员变量和getInstance()方法必须是static的
注意 单例模式是非常常用的一种结构 几乎所有的系统中都可以找到它的身影 因此 希望读者可以通过本节 了解单例模式的几种实现方式及其各自的特点
这种单例的实现方式非常简单 而且十分可靠 它唯一的不足仅是无法对instance实例做延迟加载 假如单例的创建过程很慢 而由于instance成员变量是static定义的 因此在JVM加载单例类时 单例对象就会被建立 如果此时 这个单例类在系统中还扮演其他角色 那么在任何使用这个单例类的地方都会初始化这个单例变量 而不管是否会被用到 比如单例类作为String工厂 用于创建一些字符串(该类既用于创建单例Singleton 又用于创建String对象)
public class Singleton {
private Singleton() {
System out println( Singleton is create )
//创建单例的过程可能会比较慢
}
private static Singleton instance = new Singleton()
public static Singleton getInstance() {
return instance;
}
public static void createString(){//这是模拟单例类扮演其他角色
System out println( createString in Singleton )
}
}
返回目录Java程序性能优化 让你的Java程序更快 更稳定
编辑推荐
Java程序设计培训视频教程
J EE高级框架实战培训视频教程
J ME移动开发实战教学视频
Visual C++音频/视频技术开发与实战
Oracle索引技术
lishixinzhi/Article/program/Java/gj/201311/27837
如何用Java实现单例模式单例模式:就是一个类仅创建一个对象;
public class Singleton {
【java代码实现单例模式 java代码实现单例模式的方法】private static volatile Singleton singleton = null;
private Singleton(){}// 构造方法
public static Singleton getSingleton(){// 单例模式
if(singleton == null){
synchronized (Singleton.class){
if(singleton == null){
singleton = new Singleton();
}
}
}
return singleton;
}
}
如何在Java中实现单例模式?单例模式大致有五种写法 , 分别为懒汉,恶汉 , 静态内部类,枚举和双重校验锁 。
1、懒汉写法,常用写法
推荐阅读
- 苹果大型角色扮演游戏,ios大型角色扮演游戏
- u盘360杀毒怎么恢复,u盘杀毒后文件不见了
- 小鱼快跑大班体育游戏教案,大班小鱼快跑教案反思
- 主机游戏和移动游戏开发,游戏与移动开发
- go语言copy go语言copy函数
- 鱼肉做什么饺子好吃视频,鱼肉做饺子怎么做
- 路由器加密模式什么意思,路由器加密方式是什么意思
- chatgpt高能回答,什么问题chatGpt没法回答
- c语言怎么实现外部函数 c语言的外部函数