美文网首页
单例模式相关

单例模式相关

作者: yang_zcybb | 来源:发表于2019-07-05 20:38 被阅读0次

单线程的情况下不加volatile和synchronized也是正确的单例。多线程情况下,如果你把volatile换成synchronized也是可以的,但是这样就是一个重量级,并发度会变得很差。换成volatile可以保证每个线程都可以得到instance变量的最新的值(底层的实现是,将每个线程栈桢中变量的拷贝实现,从共享区内存读取最新的值)。<br />如果不加下面的synchronized的话为什么不是线程安全的?这是因为每个对象创建会分成三步,而操作系统底层会对这个三步进行重排序,加上synchronized就会告诉操作系统不要对这三步重排序,这样保证了原子性和顺序性。(我这里面讲的比较简单,至于重排序你可以自己去查一查

public class Singleton1 {

    private static volatile Singleton1 instance = null;

    private Singleton1(){}

    public static Singleton1 getInstance(){
        if(instance == null){
            synchronized (Singleton1.class){
                if (instance == null){
                    instance = new Singleton1();
                }
            }
        }
        return instance;
    }
}

class Singleton2{

    private static Singleton2 instance = new Singleton2();

    private Singleton2(){}

    public static Singleton2 getInstance(){
        return instance;
    }
}

enum Singleton3{
    instance;

    public static void main(String[] args){
        Singleton3 s3 = Singleton3.instance;
        Singleton3 s4 = Singleton3.instance;
        System.out.println(s3 == s4);

    }

}

class Singleton4{
    private static class Lazy{
        private static Singleton4 instance = new Singleton4();
    }

    private Singleton4(){};

    public static Singleton4 getInstance(){
        return Lazy.instance;
    }
}

相关文章

  • iOS - 单例模式

    1.单例模式 1.1 概念相关 (1)单例模式 (2)使用场合 1.2 ARC实现单例 (1)步骤 (2)相关代码...

  • iOS开发-单例模式

    1.单例模式 1.1 概念相关 (1)单例模式 (2)使用场合 1.2 ARC实现单例 (1)步骤 (2)相关代码...

  • iOS之单例模式

    单例模式 1.1 概念相关 (1)单例模式 (2)使用场合 1.2 ARC实现单例 (1)步骤 (2)相关代码 1...

  • 单例模式

    1.单例模式 1.1 概念相关 (1)单例模式 (2)使用场合 1.2 ARC实现单例 (1)步骤 (2)相关代码...

  • 多线程(二)

    1.单例模式 1.1 概念相关 (1)单例模式 (2)使用场合 1.2 ARC实现单例 (1)步骤 (2)相关代码...

  • iOS开发中ARC环境下单例模式

    单例模式 1.1 概念相关 (1)单例模式 **(2)使用场合 ** 1.2 ARC实现单例 **(1)步骤 **...

  • GCD&单例分析

    1.单例模式 1.1 概念相关 (1)单例模式 (2)使用场合 1.2 ARC实现单例 (1)步骤(重点) (2)...

  • iOS多线程与网络(2)--单例模式、NSoperation

    补充 1.单例模式 1.1 概念相关 (1)单例模式 (2)使用场合 1.2 ARC实现单例 (1)步骤 (2)相...

  • iOS 开发MRC环境下的单例模式?代码?

    1.单例模式 1.1 概念相关 (1)单例模式 (2)使用场合 1.2 MRC实现单例 (1)实现步骤 (2)配置...

  • iOS 单例模式

    概念相关 (1)单例模式 (2)使用场合 2 ARC实现单例 (1)步骤 (2)相关代码 3 MRC实现单例 (1...

网友评论

      本文标题:单例模式相关

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