zoukankan      html  css  js  c++  java
  • [转] 如何正确地写出单例模式

    你真的了解单例吗?

    这两天在看 《多处理器编程的艺术》    (英文版)  里面提到懒汉式单例模式编写的不严密性。由此我想梳理下单例模式这个问题到底涉及哪些细节。于是找到文章一篇:

    原文地址:http://wuchong.me/blog/2014/08/28/how-to-correctly-write-singleton-pattern/

    pdf: 这里

    要点:

    1. 使用 “双重检验锁”优化性能 [懒汉式]

    2. 使用volatile 避免“双重检验锁”中指令重排。且仅仅在1.5之后生效 [懒汉式]

    3. 饿汉式 private static final Singleton instance = new Singleton(); 线程安全

    4.  静态内部类 static nested class 写法:

    public class Singleton {  
        private static class SingletonHolder {  
            private static final Singleton INSTANCE = new Singleton();  
        }  
        private Singleton (){}  
        public static final Singleton getInstance() {  
            return SingletonHolder.INSTANCE; 
        }  
    }

    5. enum的写法

    public enum EasySingleton{
        INSTANCE;
    }

    “不需要担心double checked locking,而且还能防止反序列化导致重新创建新的对象”

    -------------------------------------------------

    引发思考。spring的单例bean创建时是如何做的?待续

  • 相关阅读:
    触发器
    dubbox 及 zookeeper的安装与启动
    负载均衡
    SOA架构
    获取短信验证码
    分步式
    saoruo
    Ngx
    redies技术
    Springboot开发特点
  • 原文地址:https://www.cnblogs.com/simoncook/p/5617397.html
Copyright © 2011-2022 走看看