5.单件模式(单例模式)

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

猜你喜欢

转载自blog.csdn.net/cuicanxingchen123456/article/details/84306600