1、单例模式:
单例模式A
public class Singleton {
private Singleton() {
}
private static Singleton instance = new Singleton();
public static Singleton getInstance() {
return instance;
}
}
效率最快开始加载的时候就优化。缺点就是没办法延迟加载
单例模式B
public class LazySingleton {
private LazySingleton() {
}
private static LazySingleton instance = null;
public static synchronized LazySingleton getInstance() {
if (instance == null) {
instance = new LazySingleton();
}
return instance;
}
}
可以延迟加载但是由于使用了synchronized 效率下降。
单例模式C
public class StaticSingleton {
private StaticSingleton(){
}
private static class SingletonHolder{
private static StaticSingleton instance = new StaticSingleton();
}
public static StaticSingleton getInstance(){
return SingletonHolder.instance;
}
}
通过内部类来加载,这样加载类的时候不会生成对象。而且内部类中也是加载时候完成,这样可以做到线程安全
最后说下单例模式可能失效的地方:
1、反射类的私有方法。
2、进行序列化后在反序列化
2、使用代理模式来进行延迟加载
如果一个类加载的时候需要消耗大量的时间,我们可以对其进行延迟加载。用代理模式就可轻松完成。
public interface DBQuery {
String request();
}
public class DBQureyImpl implements DBQuery {
public DBQureyImpl() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Override
public String request() {
return "string";
}
}
sleep(1000)代表大量耗时等
public class DBProxy implements DBQuery {
private DBQuery instance;
@Override
public String request() {
if (instance == null) {
instance = new DBQureyImpl();
}
return instance.request();
}
}
这样就可以轻松实现,实际操作中我们可以使用动态代理等,当然也可以使用第三方的cglib与javassist,性能上来说cglib无论从生成代理类,还是调用动态方法都占优建议使用。
最后说一句hibernate的延迟加载就是通过cglib来实现的。
分享到:
相关推荐
Java程序性能优化 笔记 脑图
《Java性能优化权威指南》读书笔记(脑图) 原图,看不清楚可以下载这个
通过阅读《Java游戏编程读书笔记》这本书,你可以深入了解这些概念并学习如何将它们应用到实际项目中。文档中的内容可能涵盖了Java游戏开发的基本原理、代码示例、最佳实践以及常见问题的解决方案。通过深入学习和...
### Java编程思想读书笔记 #### 一、Java与C++的区别及内存管理 在学习Java的过程中,我们常常会拿它与C++进行比较。这两门语言虽然有着相似之处,但也有许多不同点。 1. **内存管理:** - C++提供了更为底层的...
从标题“java核心思想读书笔记”和描述可以看出,这份资料是作者结合《Java核心思想》一书和其他网络资源整理而成,适合不同水平的Java学习者,特别是初学者和有经验的工程师。 1. **Java的设计目标** - 不同于...
在Android应用开发中,性能优化是一项至关重要的任务,它直接影响到用户的体验和应用程序的市场竞争力。"Android应用性能优化最佳实践"这本书深入探讨了如何提升Android应用的性能,以下是一些核心知识点的总结: 1...
总的来说,基于Java的阅读器界面优化是一个综合性的任务,涉及界面设计原则、用户体验、文件解析、性能优化、事件处理和无障碍设计等多个方面。通过持续学习和实践,开发者可以构建出更加优秀的阅读器应用,满足不同...
以上知识点只是《Java完美经典》读书笔记中的一部分,完整的笔记还包括对这些概念的深入探讨,例如设计模式、并发编程、数据库操作、XML处理等。通过阅读并实践这些笔记,Java开发者能够不断巩固和提高自己的编程...
《Eclipse性能优化——<深度理解JVM>读书笔记》主要涵盖了如何利用Eclipse IDE进行Java应用程序的性能优化,以及深入理解JVM的工作原理。在本文中,我们将探讨Eclipse的性能调优策略,以及JVM内存管理和垃圾回收机制...
数据结构与算法分析是...这篇读书笔记不仅涵盖了理论知识,还结合Java语言特点进行了深入的探讨,对学习者来说是一份宝贵的资源。通过阅读和实践,开发者可以更好地理解和运用数据结构与算法,提升自己的编程技能。
【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...
同时,可能会涵盖JVM(Java虚拟机)的工作原理,包括内存管理、类加载机制、性能优化等方面,这对于理解和优化JAVA程序的运行效率极其重要。 最后,笔记还可能包含了实际项目开发中的经验分享,如MVC框架Spring的...
有幸阅读此书,这是一本大道至简的Java性能优化指南,使得我们的开源项目的代码质量和性能有了飞跃,更能够指导每个Java工程师写出优雅、易阅读、高质量、易于扩展的代码。 ——肖宇(开源组织dromara.org创始人,...
12. **JVM(Java虚拟机)**:了解JVM的工作原理,如类加载、内存管理、垃圾回收等,对于优化Java程序性能至关重要。 13. **单元测试与调试**:使用JUnit等工具进行代码测试,以及如何使用IDE的调试功能来定位和修复...
10. **JVM原理**:虚拟机的工作原理,内存模型,垃圾收集机制,以及性能优化的相关知识。 11. **设计模式**:常见设计模式的介绍,如单例模式、工厂模式、观察者模式等,以及在实际项目中的应用。 12. **Java EE**...
本文将深入探讨“java学习资料/笔记整理(一)”中涉及的重要知识点,包括Java编程思想、类型协变、查询手册以及数据结构与算法。 首先,Java编程思想是理解Java核心概念的关键。这通常涉及到面向对象编程(OOP)...
第五,JVM性能优化是Java开发者必须掌握的技能。笔记可能包括JVM的运行模式、类加载机制、方法区、类的生命周期,以及如何通过JProfiler、VisualVM等工具进行性能监控和调优。 第六,笔记可能还涉及到了Java网络...
在内存管理和垃圾回收方面,书中有专门章节讲解Java的内存模型以及自动内存管理机制,解释了如何避免内存泄漏和理解引用类型,这对于优化程序性能和解决内存问题非常有帮助。 书中还详细阐述了异常处理,这是Java...
这些知识点构成了Java编程的基础,通过阅读和整理"Corejava 核心java笔记",初学者可以系统地学习和巩固Java的核心概念,逐步成长为一名合格的Java开发者。记得理论结合实践,不断编写代码,才能更好地消化和吸收...