zoukankan      html  css  js  c++  java
  • 枚举方式的线程安全的单例

    1,枚举

    public enum Color {
        blue, red, yellow
    }

    枚举是会被另外处理的。

    • 枚举只能拥有私有的构造器
    • 枚举类实际上是一个继承Enum的一个final类
    • 枚举类不允许被反序列化,Enum重写了方法
    • 静态代码块中对final变量的值进行初始化
    • enum类最终是一个final class
    public final class voctrals.study.whatisspring.test.Color extends java.lang.Enum<voctrals.study.whatisspring.test.Color> {
      public static final voctrals.study.whatisspring.test.Color blue;
      public static final voctrals.study.whatisspring.test.Color red;
      public static final voctrals.study.whatisspring.test.Color yellow;
      public static voctrals.study.whatisspring.test.Color[] values(); // jdk给加上的
      public static voctrals.study.whatisspring.test.Color valueOf(java.lang.String); // jdk给加上的
      public int getValue();
      static {};
    }

    Enum中的方法

        /**
         * prevent default deserialization
         */
        private void readObject(ObjectInputStream in) throws IOException,
            ClassNotFoundException {
            throw new InvalidObjectException("can't deserialize enum");
        }
    
        private void readObjectNoData() throws ObjectStreamException {
            throw new InvalidObjectException("can't deserialize enum");
        }

    2,单例模式

    单例模式就是保证整个jvm中只存在唯一的一个实例。

    饿汉式,在被jvm加载的过程中就已经被初始化了。静态代码块的原因。

    public class BeanContainer {
    
        public static BeanContainer getInstance() {
            return ContainerHolder.HOLDER.instance;
        }
    
        private enum ContainerHolder {
            HOLDER;
            private BeanContainer instance;
    
            ContainerHolder() {
                instance = new BeanContainer();
            }
        }
    }
  • 相关阅读:
    2015总结篇
    Android应用性能优化实践
    Android国外学习资源汇总
    直接拿来用!十大Material Design开源项目
    selenium12-读取文件 excel
    selenium11-自动化练习读取文件txt
    selenium10-python3部分代码复习
    selenium09-自动化练习案例
    selenium08-测试用例模块化与数据分离
    selenium07-处理 alter 对话框
  • 原文地址:https://www.cnblogs.com/voctrals/p/10628137.html
Copyright © 2011-2022 走看看