Java中的单例模式
2016-06-01 10:23
405 查看
第一种(懒汉,线程不安全)
public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if(instance == null) { instance = new Singleton(); } return instance; } }
第二种(懒汉,线程安全)
pulic class Singleton { private static Singleton instance; private Singleton () {} public static synchronized Singleton getInstace() { if (instance == null) { instance = new Singleton(); } return instance; } }
第三种(饿汉)
public class Singleton { private static Singleton instance = new Singleton(); private Singleton (){} public static Singleton getInstance() { return instance; } }
第四种(饿汉,变种)
public class Singleton { private Singleton instance = null; static { instance = new Singleton(); } private Singleton () {}; public static Singleton getInstance() { return this.instance; } }
第五种(静态内部类)
public class Singleton { private static class SingletonHolder { private static final Singleton INSTANCE = null; } private Singleton (){} public static final Singleton getInstance() { return SingletonHolder.INSTANCE; } }
第六种(枚举)
public enum Singleton { INSTANCE; public void whateverMethod() { } }
第七中(双重校验锁)
public class Singleton { private volatile static Singleton singleton; private Singleton (){} public static Singleton getSingleton() { if(singleton == null) { synchronized (Singleton.class) { if(singleton == null) { singleton = new Singleton(); } } } return singleton; } }
相关文章推荐
- [leetcode-342]Power of Four(java)
- Ehcache 整合Spring 使用页面、对象缓存
- Java实现8中常用的排序
- springmvc环境整合
- SpringMVC之原理浅析
- 理解Java垃圾回收机制
- java读取excel数据
- spring官网下载jar包
- 浅谈Java动态代理
- 深入理解JDK、JRE(两套)、JVM、以及不同目录下的java.exe
- java 第1章 win7下配置java环境变量
- Android Studio 如何快速简便的导入Eclipse工程
- Java学习之自定义异常和抛出异常
- JAVA clone的简单理解
- Spring源码学习笔记(二)-AOP基础简介
- Spring 4.x官方参考文档中文版——第21章 Web MVC框架(8)
- Spring SpringMVC Hibernate 注解
- 项目查询日期的一个小问题
- java中实现投票选择班长的案例
- Java中将汉字转为拼音