架构师作业 - 第三周 - 单例
书写了两个版本,上面的是饿汉式,直接在启动时初始化出 instance,可以保证全局使用的性能是一致的,但是如果是不常用的单例类这样创建出来属于浪费资源;
下面的是饿汉式,添加了 volatile 关键字(写的时候拼错了)标识多线程可见,同时在 getInstance 里加了 Synchronized 同步锁和双重判空来校验单例创建的正确性。
之前看过资料,单例可以通过反射来进行破坏,需要在构造类里做一些抛异常等特殊处理,手写时忘了是不是直接判断==null 之后 throw exception 即可,所以没有写。
评论