Java 单例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java 单例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1185字,纯文字阅读大概需要2分钟。
内容图文
最近在网上看到一篇关于 Java 单例的创建问题,虽然是一个 Java 程序员,但是到现在还没有真正的深入了解到 Java 的原理和机制。所以每每看到这样能够“真正”接触 Java 的机会内心总是充满了欣喜。记录下,以后备用。
懒汉模式
public class Singlton{ private static Singleton instance; private Singlton(){} public static Singlton getInstance(){ if(instacne == null) instance = new Singlton(); return instance; } }
教科书式的写法,但是无法适用于多线程的状态下。
饿汉模式
public class Singleton{ private static Singletion instance = new Singleton(); private Singleton(){} publicstatic Singleton getInstance(){ return instance; } }
饿汉模式可以有效的避免多线程的同步问题,不过使用 static 会多多少少牺牲点性能。
静态内部类
public class Singleton{ private static class SingltonHolder{ private static final Singleton INSTANCE = new Singlton(); } private Singleton(){} publicstatic final Singleton getInstance(){ return SingletonHolder.INSTANCE; } }
使用静态内部类的方式,利用 ClassLoder 的机制保证了初始化的时候只有一个线程,并且兼顾了性能——Singleton 类被装载的时候,getInstance 并不会立马初始化,只有调用的时候才会被初始化。
枚举
public enum Singleton{ INSTANCE; public void method(){ // do something } }
这种方式 Effective Java 中推荐的方式,很厉害的一种写法。唯一的缺点就是无法继承了吧。
小结
虽然只是创造一个单例,但是其中需要考虑的东西真的有很多。不得不感叹那些编程高手,能够将心思缜密,利用语言的各种特性去编程创造。对于创建单例模式还是比较推荐使用静态内部类的方式创建,不失性能的同时又兼顾安全。但是其实我更加喜欢枚举的方式。
原文:http://www.cnblogs.com/manastudent/p/6706711.html
内容总结
以上是互联网集市为您收集整理的Java 单例全部内容,希望文章能够帮你解决Java 单例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。