栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

单例设计模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

单例设计模式


//单例设计模式
//懒汉式
//优点: 第一步调用会初始化。避免内衬浪费
//缺点:必须加锁才能保证单例, 加锁会影响效率

public class Singleton{

    private static Singleton instance;

    //私有化构造方法
    private Singleton(){}
    //线程安全
    public static synchronized Singleton getInstance(){
        if (instance==null){
            instance = new Singleton();
        }
        return instance;
    }
}

//饿汉式
//优点:没有加锁,效率高
//缺点:类加载是就初始化,浪费内存
public class Singleton {
    private static Singleton instance = new Singleton();

    private Singleton() {
    }

    public static Singleton getInstance() {
        return instance;

    }
}

//双检锁/双重校验锁
//线程 安全 多线程情况下保持高性能
//volatile的作用:提高效率,可以解决加锁后多个线程需要判断锁,浪费资源
public class Singleton{
    private volatile static Singleton singleton;

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

}


//静态内部类
//线程安全
//这种方式只适用于静态域的情况,双检锁方式可在实例域需要延迟初始化时使用。
public class Singleton{
    private static class SingletonHolder{
        private static final Singleton  INSTANCE = new Singleton();
    }
    private Singleton(){}
    public static final Singleton getInstance(){
        return SingletonHolder.INSTANCE;
    }

}

//枚举
//线程安全
//优点:简洁,自动支付序列化机制,防止多次实例化
public enum Singleton{
    INSTANCK;
    public void singletonMethod(){}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/531497.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号