Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在这个博客中:
清单 10 中的代码不使用同步,并确保在调用静态 getInstance() 方法之前不会创建 Singleton 对象。
上面的引用是不是假的?由于静态对象是在类的早期初始化的,那么在调用静态方法之前如何不创建对象getInstance()?
getInstance()
问题中引用的代码本质上是这样的:
class Singleton { private static Singleton instance = new Singleton(); public static Singleton getInstance() { return instance; } }
这是线程安全的,因为实例不是延迟初始化的,而是在加载类时实例化一次。
类加载器强制执行自己的同步以保证类初始化是线程安全的。