Java中的单例线程安全性

时间:2014-10-27 18:33:37

标签: java android multithreading

基本上我在developers.android.com上通过多线程指南,当我看到让我感到困惑的事情时...(我正在审视这篇文章

http://developer.android.com/training/multiple-threads/create-threadpool.html

在Define the Thread Pool Class部分中,他们提到该类应具有私有构造函数以使其成为单例,但作者声称通过这样做,代码不需要同步。我很困惑为什么这是线程安全的,因为它是单例,它仍然可以被多个线程同时引用,导致内存一致性错误等。

1 个答案:

答案 0 :(得分:3)

他们的意思是:

  • 由于构造函数是私有的,因此类本身内部的方法可以创建该类的实例
  • 创建该类的唯一实例是:

    static  
    {
          // Creates a single static instance of PhotoManager
           sInstance = new PhotoManager();
    }
    
  • 静态{...}块是线程安全的,因为它是由类加载器执行的,它是同步的