卤煮 看这个饿汉式的例子- class Single
- {
- private Single(){}
- private static Single s = new Single();
- public static Single getInstance()
- {
- return s;
- }
- }
复制代码 构造函数被私有化,所以其他类不能通过 new来获取single的对象,只能通过 getInstance方法.
而 private static Single s = new Single();是私有并且静态的
也就是说类加载s就加载 并且只加载一次.
这个对象是共享,内存中只有一份,不会被new多个.
你再看下懒汉式- class Single
- {
- private static Single s = null;
- private Single(){}
- public static Single getInstance()
- {
- if(s==null)
- {
- synchronized(Single.class)
- {
- if(s==null)
- s = new Single();
- }
- }
- return s;
- }
- }
复制代码 s不存在则创建,存在则直接返回s.不会出现两个对象. |