Java Lazy 单例
实现
维基百科里的实现方式:
1 | public class Something { |
解释
Java 加载内部类的机制是,当需要的时候再加载。在 Something::getInstance
被调用之前 LazyHolder
类是不会被加载的,因为不会被加载所以也不会被初始化。也所以 LazyHolder::INSTANCE
也不会存在的。
当 Something::getInstance
被调用时,先加载 LazyHolder
并及时初始化类 (也就是说初始化 LazyHolder::INSTANCE
),然后访问 LazyHolder::INSTANCE
。
之后再次调用 Something::getInstance
时,直接访问已经初始化的 LazyHolder::INSTANCE
。