单例模式

package com.bjsxt.thread.syn;
/**
 * 单例创建方式
 * 1.懒汉式
 * 1)构造器私有化
 * 2)声明私有的静态变量
 * 3)对外提供访问属性的方法(静态方法,确保该对象存在)
 * @author Administrator
 *
 */
public class Myjvm {
	private static Myjvm instance;
	
	private Myjvm() {
		
	}
	public static Myjvm getInstance(){
		if (null==instance) {//提高效率
			synchronized(Myjvm.class) {
				if (null==instance) {//安全
					instance = new Myjvm();
				}
			}
		}
		return instance;
		
	}
}
/**
 * 饿汉式
 * 1)构造器私有化
 * 2)声明私有的静态属性,同时创建该对象
 * 3)对外提供访问属性的方法
 * @author Administrator
 *
 */
class Myjvm2 {
	private static Myjvm2 instance = new Myjvm2(); //类加载时候创建
	
	private Myjvm2() {
		
	}
	public static Myjvm2 getInstance(){
		return instance;
	}
}
/**
 * 类在使用的时候加载,延缓了加载时机
 * @author Administrator
 *
 */
class Myjvm3 {
	private static class JVMHolder{
		private static Myjvm3 instance = new Myjvm3(); //类加载时候创建
	}
	private Myjvm3() {
		
	}
	public static Myjvm2 getInstance(){
		return instance;
	}
}
posted on 2019-02-02 23:34  昉之  阅读(196)  评论(0)    收藏  举报