饿汉模式和饱汉模式

单例中饱汉/懒汉和饿汉的本质区别在于以下几点:

  1、饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变。懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的。

  2、从实现方式来讲他们最大的区别就是饱汉/懒汉式是延时加载,他是在需要的时候才创建对象,而饿汉式在虚拟机启动的时候就会创建,饿汉式无需关注多线程问题、写法简单明了、能用则用。
/**饿汉模式*/
public class SingleTon1 {
	
	public SingleTon1(){}
	
	private static  SingleTon1 instance=new SingleTon1();
	
	public static SingleTon1 getnInstance(){
		return instance;
	}
	
}
 
  
/** 饱汉模式/懒汉模式 */
public class SingleTon2 {
	
	public SingleTon2(){}
	
	private static  SingleTon2 instance = null;


	public static synchronized SingleTon2 getnInstance() {
		if (instance == null)
			instance = new SingleTon2();
		return instance;
	}
	
}
 
  
 
 

你可能感兴趣的:(饿汉模式,饱汉模式)