如何将Java单例模式最佳实践(延迟加载,性能优化)巧妙地转化为一个长尾?
- 内容介绍
- 文章标签
- 相关推荐
本文共计457个文字,预计阅读时间需要2分钟。
javapackage cn.lcl.pattern.singleton;
/** * Java中单例模式的最佳实践,既能够延迟加载,又能保证性能。 * 但不适用于所有OOP编程语言,因为它使用了静态内部类的形式。 * * 1. 恶汉式 * */
package cn.lcl.pattern.singleton; /** * java中单例模式的最佳实践,既能够延迟加载,又能够保证性能。但是不适合于所有的OOP编程语言,它使用了静态内部类的方式 * 1.恶汉式 * 不管有没有使用这个类的对象,都会将其加载进内存。浪费内存空间,特别是一般单例对象的职责都是比较重的,会耗费大量的 * 资源。 * 2.饱汉式。 * 优点是可以延迟加载,但是为了保证线程安全性。成员变量要加volatile变量,因为程序可能运行在多线程环境中,要保证 * instance字段的原子性。但是原子性字段会丢失虚拟机的部分优化。而且每次通过getInstace()方法获取单例对象的时候要做if * 判断,耗费cpu资源。所以懒汉式的缺点是性能丢失。 * 3.使用静态内部类来生成单例对象。
本文共计457个文字,预计阅读时间需要2分钟。
javapackage cn.lcl.pattern.singleton;
/** * Java中单例模式的最佳实践,既能够延迟加载,又能保证性能。 * 但不适用于所有OOP编程语言,因为它使用了静态内部类的形式。 * * 1. 恶汉式 * */
package cn.lcl.pattern.singleton; /** * java中单例模式的最佳实践,既能够延迟加载,又能够保证性能。但是不适合于所有的OOP编程语言,它使用了静态内部类的方式 * 1.恶汉式 * 不管有没有使用这个类的对象,都会将其加载进内存。浪费内存空间,特别是一般单例对象的职责都是比较重的,会耗费大量的 * 资源。 * 2.饱汉式。 * 优点是可以延迟加载,但是为了保证线程安全性。成员变量要加volatile变量,因为程序可能运行在多线程环境中,要保证 * instance字段的原子性。但是原子性字段会丢失虚拟机的部分优化。而且每次通过getInstace()方法获取单例对象的时候要做if * 判断,耗费cpu资源。所以懒汉式的缺点是性能丢失。 * 3.使用静态内部类来生成单例对象。

