版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cuicanxingchen123456/article/details/84306600
Head-First-Design-Patterns-master\src\headfirst\designpatterns\singleton
独一无二的对象
整个程序中只允许有一个对象(如数据库连接或者线程池)
否则:程序行为异常,资源使用过量,或者导致不一致的结果
构造器是私有的,通过调用静态方法getinstance返回
定义:单件模式确保一个类只有一个实例,并提供一个全局访问点
静态方法访问比全局变脸访问多了一个优点:单例可以延迟实例化
多线程下的单例
一种方法是使用synchronized,但是降低性能
使用“急切”创建实例,保证线程安全
public class Singleton{
private static Singleton uniqueInstance=new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return uniqueInstance;
}
}
private volatile static Singleton uniqueInstance()
volatile 确保当uniqueInstance变量被初始化成Singleton实例时,多个线程正确地处理uniqueInstance变量
使用加锁和判断null的双重检查加锁
可以参考博客:https://blog.csdn.net/zbw18297786698/article/details/71064139