单例模式

一、什么是单例模式
单例模式是java中最简单的设计模式。该模式有一下特点:
1、单例类只能一个实例
2、单例类的唯一实例只能由自己创建
3、单例类自己创建的唯一实例必须能被所有对象所用
二、几种常用单例模式
1、懒汉式(线程不安全)
优点:由于不实现多线程,效率较高
缺点:无法在应用在多线程场景下

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

2、懒汉式(线程安全)
优点:第一次调用的时候采用进行初始化,避免内存浪费
缺点:效率较低

public class Singleton{
	private static Singleton instance;
	private Singleton(){}
	public static synchronized Singleton getInstance(){
		if(instance==null){
			instance = new Singleton();
		}
		return instance;
	}
}

3、饿汉式
优点:在没有加锁,保证了效率
缺点:类加载是就会创建实例,无论是否调用实例都会存在,浪费内存。

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

4、双检锁/双重校验锁
优点:在加锁保证了线程安全的情况下,能够保证高性能
缺点:实现方式较之前的复杂

public class Singleton(){
	private volatile Singleton instance;
	private Singleton(){}
	public 	static Singleton getInstance(){
		if(instance==null){
			sychronized(Singleton.class){
						if(instance==null){
							instance = new Singleton();
						}
				}
		}
		return instance;
	}
}

你可能感兴趣的:(JavaSE学习笔记)