美文网首页
singleton(单例)模式

singleton(单例)模式

作者: 小名坎坎 | 来源:发表于2017-06-21 20:14 被阅读0次

    我们在开发中,要说最常用的设计模式肯定就是单例模式了,顾名思义单例模式就是一个实例。那么我们来写一个单例模式的例子

    或许很多人才接触写单例模式就是如此,但是考虑到多线程并发,我们想到了synchronized。可以得到

    似乎看来挺完美了,但是当第一个线程执行完后同步代码块以后,第二个线程开始执行,他不会再次判断 singleten==null ,所以想到双重校验锁

    到了这一步 ,在我看来已经挺完美了 , 但是实际上问题总会有的

    因为指令重排序的原因 ,可能造成 第二个线程执行的时候 new Singleton();初始化并没有完全完成 , 导致线程2 引用的对象不完整,解决如下 或者使用volatile关键字

    当我们在实例化对象的时候可能需要上下文,当我们使用单例模式的时候加入传入的是activity时,那么就有可能造成内存泄露,所以此处mark一下,写代码的时候需注意。

    单例模式写法常常分两种,简单的说:

    懒汉式:直到你用我,我才实例化

    恶汉式:不管你用不用,我先实例化在这放着


    相关文章

      网友评论

          本文标题:singleton(单例)模式

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