这种方法也被使用了 classloder保证初始化的机制 instance 只有一个线程。 当程序启动时,也可以按需加载 SingleForClassLoad 类被装载,instance不一定是初始化。 因为 Instance 类别没有主动使用,只有通过调用显示getInstance装载只有在方法中才会显示 Instance 类,从而实例化instance。 想象一下,如果实例化的话 instance 非常消耗资源,我想让他延迟加载,这无疑是一个更好的选择!
/** * 这种方法也被使用了 classloder的机制来保证初始化 instance 只有一个线程。 * * 当程序启动时,也可以按需加载 SingleForClassLoad 类被装载,instance不一定是初始化。 * * 因为 Instance 类别没有主动使用,只有通过调用显示getInstance装载只有在方法中才会显示 Instance 类,从而实例化instance。 * * 想象一下,如果实例化的话 instance 非常消耗资源,我想让他延迟加载,这无疑是一个更好的选择! */ public class SingleForClassLoad { /** * 私有化构造函数 */ private SingleForClassLoad() { } public static Instance getInstance() { return Instance.INSTANCE;// 获取实例 } /** * 静态内部类,只加载一次 */ private static class Instance { private static final Instance INSTANCE = new Instance(); } }