资讯专栏INFORMATION COLUMN

整理下java六种单例模式

james / 2325人阅读

摘要:如果明确要实现懒加载效果时,使用第种静态内部类方式。如果涉及到反序列化创建对象时,可以使用第种枚举方式。懒汉式,线程不安全懒汉式,线程安全双重检查锁,懒汉式,线程安全饿汉式,线程安全静态内部类,懒汉式,线程安全枚举类,懒汉式,线程安全

可能总结的会有问题,我会一点点完善的...

结论:建议使用第 4 种饿汉方式。如果明确要实现懒加载效果时,使用第 5 种静态内部类方式。如果涉及到反序列化创建对象时,可以使用第 6 种枚举方式。

1 懒汉式,线程不安全
public class Singleton {

    private static Singleton instance=null;
    
    public static Singleton getInstance(){
        if(instance==null){
            instance=new Singleton();
        }
        return instance;
    }
    
     private Singleton(){}
}
2 懒汉式,线程安全
public class Singleton {

    private static Singleton instance=null;
    
    public static synchronized Singleton getInstance(){
        if(instance==null){
            instance=new Singleton();
        }
        return instance;
    }
    
    private Singleton(){}
}
3 双重检查锁,懒汉式,线程安全
public class Singleton {

    private volatile static Singleton instance=null;
    
    public static Singleton getInstance(){
        if(instance==null){
            synchronized(Singleton.class){
                if(instance==null){
                    instance=new Singleton();
                }
            }
        }
        return instance;
    }
    
            
    private Singleton(){}
}
4 饿汉式,线程安全
public class Singleton {

    private static Singleton instance=new Singleton();
    
    public static Singleton getInstance(){
        return instance;
    }
    
    private Singleton(){}
}
5 静态内部类,懒汉式,线程安全
public class Singleton {
    
    private static class SingletonHolder{
        private final static Singleton instance=new Singleton();
    }
    
    public static Singleton getInstance(){
        return SingletonHolder.instance;
    }
    
    private Singleton(){}
}
6 枚举类,懒汉式,线程安全
public enum SingletonEnum{
    INSTANCE;
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72146.html

相关文章

  • Java多线程基础(二)——Java内存模型

    摘要:一主存储器与工作存储器内存模型分为主存储器和工作存储器两种。工作存储器每个线程各自独立所拥有的作业区,在中,存有中的部分拷贝,称之为工作拷贝。注意线程欲退出时,不会执行工作存储器的释放操作。 一、主存储器与工作存储器 Java内存模型(memory model)分为主存储器(main memory)和工作存储器(working memory)两种。 主存储器(main memory)...

    huhud 评论0 收藏0
  • Java设计模式单例模式单例六种实现

    摘要:单例模式的优缺点优点单例模式在内存中只有一个实例,减少了内存开支,尤其是频繁的创建和销毁实例。单例模式对测试不利。单例模式与单一职责原则有冲突,一个类应该只实现一个逻辑,而不用关心它是否是单例的。资源源码参考设计模式之禅原文地址:xeblog.cn/articles/16 单例模式的定义 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 UML类图 showImg(ht...

    番茄西红柿 评论0 收藏0
  • Java设计模式单例模式单例六种实现

    摘要:单例模式的优缺点优点单例模式在内存中只有一个实例,减少了内存开支,尤其是频繁的创建和销毁实例。单例模式对测试不利。单例模式与单一职责原则有冲突,一个类应该只实现一个逻辑,而不用关心它是否是单例的。资源源码参考设计模式之禅原文地址:xeblog.cn/articles/16 单例模式的定义 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 UML类图 showImg(ht...

    番茄西红柿 评论0 收藏0
  • Java设计模式单例模式单例六种实现

    摘要:单例模式的优缺点优点单例模式在内存中只有一个实例,减少了内存开支,尤其是频繁的创建和销毁实例。单例模式对测试不利。单例模式与单一职责原则有冲突,一个类应该只实现一个逻辑,而不用关心它是否是单例的。资源源码参考设计模式之禅原文地址:xeblog.cn/articles/16 单例模式的定义 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 UML类图 showImg(ht...

    Caicloud 评论0 收藏0
  • 「码个蛋」2017年200篇精选干货集合

    摘要:让你收获满满码个蛋从年月日推送第篇文章一年过去了已累积推文近篇文章,本文为年度精选,共计篇,按照类别整理便于读者主题阅读。本篇文章是今年的最后一篇技术文章,为了让大家在家也能好好学习,特此花了几个小时整理了这些文章。 showImg(https://segmentfault.com/img/remote/1460000013241596); 让你收获满满! 码个蛋从2017年02月20...

    wangtdgoodluck 评论0 收藏0

发表评论

0条评论

james

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<