首页 > 其他 > 详细

设计模式实现 - 单例模式

时间:2019-03-28 15:34:44      阅读:94      评论:0      收藏:0      [点我收藏+]

单线程单例模式通常分为两种

1)饿汉模式:声明变量/构造函数时实例化。快,但是如果没有用到这个类,会出现资源浪费

2)懒汉模式:在getInstance()内初始化。

优化

为了优化饿汉模式,减少资源浪费,可以使用静态内部类

public class Singleton {

    private Singleton() {}

    private static class SingletonInstance {
        private static final Singleton INSTANCE = new Singleton();
    }

    public static Singleton getInstance() {
        return SingletonInstance.INSTANCE;
    }
}

 

多线程下使用懒汉模式通常会出现重复实例化对象的错误,需要进行优化

1)syncronized method 同步方法。效率低而且没必要

2)syncronized code 同步代码块。若==null内部添加同步关键词。**注意需要添加两个判断句,如果sync内部没有if判断,可能会出现多个线程同时进入if语句的问题(因为if判断并不同步)

  

public class Singleton {

    private static volatile Singleton singleton;

    private Singleton() {}

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

单例适用于工具类对象,避免频繁创建/销毁对象。

设计模式实现 - 单例模式

原文:https://www.cnblogs.com/GW977/p/10615174.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!