标签:-- zed 单例 实例化 模式 oid return ati span
package com.design.singleton; public class EagerSingleton { private static final EagerSingleton EAGER_SINGLETON = new EagerSingleton(); private EagerSingleton(){} public static EagerSingleton getInstance(){ return EAGER_SINGLETON; } }
当这个类被加载时,静态变量 EAGER_SINGLETON 就会被初始化。
package com.design.singleton; public class LazySingleton { private static LazySingleton lazySingleton = null; private LazySingleton(){} public synchronized static LazySingleton getInstance(){ if (lazySingleton == null){ return new LazySingleton(); } return lazySingleton; } }
【区别】饿汉单例模式在自己被加载时就将自己实例化。从资源利用的角度讲,饿汉比懒汉差点。从速度和反应时间来讲,饿汉比懒汉块。懒汉在实例化的时候,需要处理多线程的问题。
还有一种用的比较多的
静态内部类单例:
package com.design.singleton; public class InnerSingleton { private InnerSingleton(){} private static class Inner{ private static InnerSingleton Instance = new InnerSingleton(); } public static InnerSingleton getInstance(){ return Inner.Instance; } public void doSomething(){ // do something } }
这个单例线程安全
标签:-- zed 单例 实例化 模式 oid return ati span
原文地址:http://www.cnblogs.com/LUA123/p/7798596.html