标签:设计模式-单例模式
package com.mycompany.singletondemo;
/**
 * 线程安全 ,饿汉式
 * @author Administrator
 *
 */
public class Singleton1 {
	
	//构造方法私有化
	private Singleton1(){}
	
	//定义static和final类型的实例对象
	private static final Singleton1 instance = new Singleton1();
	
	/*
	 * 通过静态方法获取实例
	 */
	public static Singleton1 getInstance(){
		return instance;
	}
}package com.mycompany.singletondemo;
/**
 * 线程非安全,饱汉式
 * @author Administrator
 *
 */
public class Singleton2 {
	
	//构造方法私有化
	private Singleton2(){}
	
	//定义变量
	private static Singleton2 instance;
	
	//定义静态方法获取实例
	public static Singleton2 getInstance(){
		if (instance == null) {
			instance = new Singleton2();
		}
		
		return instance;
	}
}package com.mycompany.singletondemo;
/**
 * 线程安全,同步方法频繁调用时,效率低,多线程访问不会出现多个实例
 * @author Administrator
 *
 */
public class Singleton3 {
	private Singleton3(){}
	
	private static Singleton3 instance;
	
	public static synchronized Singleton3 getInstance(){
		if(instance == null){
			instance = new Singleton3();
		}
		
		return instance;
	}
}package com.mycompany.singletondemo;
/**
 * 线程安全,效率高,内存占用少
 * @author Administrator
 *
 */
public class Singleton4 {
	private Singleton4(){}
	
	private static volatile Singleton4 instance;
	
	public static Singleton4 getInstance(){
		if (instance == null) {
			synchronized (Singleton4.class) {
				if (instance == null) {
					instance = new Singleton4();
				}
			}
		}
		
		return instance;
	}
}本文出自 “素颜” 博客,谢绝转载!
标签:设计模式-单例模式
原文地址:http://suyanzhu.blog.51cto.com/8050189/1910794