单例模式_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 单例模式

单例模式

 2013/11/5 15:36:48  宋建勇  程序员俱乐部  我要评论(0)
  • 摘要:Java之美[从菜鸟到高手演变]之设计模式Java开发中的23种设计模式详解packagecn.com.songjy;publicclassSingleton{/*持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载*/privatestaticSingletoninstance=null;/*私有构造方法,防止被实例化*/privateSingleton(){}/*静态工程方法,创建实例,非线程安全*/publicstaticSingletongetInstance1()
  • 标签:模式 单例模式
Java之美[从菜鸟到高手演变]之设计模式

Java开发中的23种设计模式详解

class="java">package cn.com.songjy;

public class Singleton {

	/* 持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载 */
	private static Singleton instance = null;

	/* 私有构造方法,防止被实例化 */
	private Singleton() {
	}

	/* 静态工程方法,创建实例 ,非线程安全 */
	public static Singleton getInstance1() {
		if (instance == null) {
			instance = new Singleton();
		}
		return instance;
	}

	/* 静态工程方法,创建实例 ,线程安全(但不绝对,原因请参阅以上2个链接的说明,但针对其说明个人有保留意见) */
	public static Singleton getInstance() {
		if (instance == null) {
			synchronized (Singleton.class) {// 此处能否写成synchronized(instance),为啥???
				if (instance == null) {
					instance = new Singleton();
				}
			}
		}
		return instance;
	}

	/* 如果该对象被用于序列化,可以保证对象在序列化前后保持一致 */
	public Object readResolve() {
		return instance;
	}
}


以下是绝对线程安全的单例模式,其缺点是没实现懒加载,大数据或大型项目中可能影响性能
package cn.com.songjy;

public class Singleton {
	
	private static final Singleton instance = new Singleton();
	
	private Singleton(){}
	
	public static Singleton getInstance(){
		return instance;
	}

}
  • Java并发编程常识.zip (371 KB)
  • 下载次数: 0
发表评论
用户名: 匿名