官术网_书友最值得收藏!

Early and lazy loading

Singletons can be split into two categories, depending on when the instance object is created. If the singleton is created when the application is started, it is considered an early/eager instantiation. Otherwise, if the singleton constructor is invoked when the getInstance method is invoked for the first time, it is considered a lazy-loading singleton.

The lock-free thread-safe singleton presented in the previous example is considered an early-loading singleton in the first version of Java. However, in the latest version of Java, classes are loaded when they are needed, so that version is also a lazy-loading version. Furthermore, the moment that a class is loaded depends on the JVM implementation and may differ from one version to another. Making design decisions based on JVM implementation should be avoided.

Currently, there is no reliable option in Java for creating an early loading singleton. If we really need an early instantiation, we should enforce it at the start of the application, by simply invoking the getInstance() method, as shown in the following code:

Singleton.getInstance();
主站蜘蛛池模板: 修武县| 金乡县| 岑溪市| 蒙城县| 平乡县| 江油市| 和龙市| 边坝县| 油尖旺区| 长垣县| 昌都县| 德兴市| 英吉沙县| 利辛县| 于都县| 邻水| 张北县| 彩票| 恩施市| 保康县| 乐安县| 绩溪县| 清原| 水城县| 盐源县| 湘潭市| 古田县| 宝坻区| 宜川县| 阳谷县| 鄂托克前旗| 射阳县| 临夏市| 固原市| 济源市| 河间市| 遂平县| 剑河县| 孙吴县| 开阳县| 镇宁|