标签:锁定 nbsp hold 加载 stat gets 多线程 线程安全 实例
一、单例模式的定义
单例模式:保证类只有一个实例,并提供一个它的全局访问点。
二、单例模式的三种实现方式。
饿汉式: 饿汉式由于是在类被加载时就创建了实例,不会面临线程安全问题。但是它过早的就占用了系统的资源。
public class Singleton {
private static Singleton singleton =new Singleton();
private singleton(){}
public static Singleton getSingleton(){
return singleton;
}
}
懒汉式:懒汉式是在方法被调用时才会创建实例,实现了延迟加载,节约系统资源。但是在多线程环境下面临着线程安全的问题。需要加同步锁并且进行双重锁定的处理,才能保证线程的安全。
public class Singleton{
private static Singleton singleton =null;
private singleton(){}
public static Singleton getSingleton(){
if(singleton==null){
Syschronized(Singleton.class){
if(singleton==null){
singleton=new Singleton();
}
}
}
return singleton;
}
}
Holder单例模式(工作中最常用的):跟懒汉式类似,实现了延迟加载。但是将实例的初始化放入静态内部类中,从而保证了只创建一个实例。
public class Singleton{
private Singleton (){};
public Singleton getSingleton(){
return Singleton.singleton;
}
public static class Singleton{
private static Singleton singleton= new Singleton();
}
}
标签:锁定 nbsp hold 加载 stat gets 多线程 线程安全 实例
原文地址:https://www.cnblogs.com/yfy-/p/11809717.html