在 Java 程序中,有时候需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象的时候才进行初始化。如何采用线程安全的操作来设计这个初始化呢?
答案是基于类初始化来解决,JVM 在类的初始化阶段(即在 class 被加载后,且被线程使用之前),会执行类的初始化,在执行类的初始化期间,JVM 会去获取一个锁。这个锁可以同步多个线程对同一个类的初始化。
实现如下:
在 Java 程序中,有时候需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象的时候才进行初始化。如何采用线程安全的操作来设计这个初始化呢?
答案是基于类初始化来解决,JVM 在类的初始化阶段(即在 class 被加载后,且被线程使用之前),会执行类的初始化,在执行类的初始化期间,JVM 会去获取一个锁。这个锁可以同步多个线程对同一个类的初始化。
实现如下: