zoukankan      html  css  js  c++  java
  • Java 单例模式

    import java.io.Serializable;
    
    // 修改后的单例模式
    
    // 使用线程同步创建,防止进程切换重复创建线程,
    // 设置volatile关键字修饰,使读取singleton对象时能够获取最新状态
    // 修改构造方法,防止反射创建对象
    // 修改readResolve方法,防止反序列化对象时重新创建对象
    // 重写克隆方法,防止对象克隆
    public class Singleton2 implements Serializable, Cloneable {
        private static volatile Singleton2 singleton;
    
        private Singleton2() {
            if (singleton != null) {
                throw new RuntimeException("对象已被创建");
            }
        }
    
        public static Singleton2 getInstance() {
            if (singleton == null) {
                synchronized (singleton) {
                    if (singleton == null)
                        singleton = new Singleton2();
                }
            }
            return singleton;
        }
    
        private Object readResolve() {
            return singleton;
        }
    
        @Override
        protected Object clone() throws CloneNotSupportedException {
            return getInstance();
        }
    }
    © 2020 GitHub, Inc.
    

      

  • 相关阅读:
    Mybatis中的like模糊查询
    Cookie
    架构师的自我修养
    微服务要面临的问题
    为啥要去IOE——分布式架构的由来
    分层架构设计
    如何选开源协议
    中国互联网20年简史
    2018第27周总结
    保住本金,安全第一
  • 原文地址:https://www.cnblogs.com/Dean0731/p/12362204.html
Copyright © 2011-2022 走看看