美文网首页
Java 单例最佳实践

Java 单例最佳实践

作者: 段子周 | 来源:发表于2017-10-18 10:44 被阅读51次

    网上关于Java单例模式的讨论和探究已经远超出它本来产生的价值,这篇文章用来记录需要单例时的best practice.

    饿汉单例

    99%的情况下你都不需要懒汉单例(延迟初始化)

    饿汉代码(JVM 类加载机制保证单例)

    public class MySingleton {
    
        private static final MySingleton instance = new MySingleton();
    
        private MySingleton() {}
    
        public static MySingleton getInstance() {
            return instance;
        }
    }
    

    还是需要延迟加载?

    Initialization-on-demand holder idiom 单例 (JVM加载机制保证单例)

    public class MyHolderSingleton {
    
        private static final class Holder {
            private static final MyHolderSingleton instance = new MyHolderSingleton();
        }
    
        private MyHolderSingleton(){}
    
        public static MyHolderSingleton getInstance() {
            return Holder.instance;
        }
    }
    

    References

    上面两种做法已经是基本可能需要场景的单例做法了,理解并记住他们,从此不再看单例了。
    如果除了最佳实践,还需要探究单例的所有可能问题和原理,参看下表:

    相关文章

      网友评论

          本文标题:Java 单例最佳实践

          本文链接:https://www.haomeiwen.com/subject/nmrsuxtx.html