本帖最后由 tacyjay在路上 于 2014-4-17 13:17 编辑
据毕老师视频上来说,懒汉式的问题主要在其的不安全性,可以参考下
写法一:初始化对象——饿汉式 class Single { private static Single s = new Single(); private Single(){} public static Single getInstance () { return s; } } 方法二:对象是方法被调用时才初始化,也叫做对象的延时加载——懒汉式 ■面试考点:(考察其不安全的原因) class Single { private static Single s = null; private Single(){} public static Single getInstance () { if (s == null) s = new Single (); return s; } } 饿汉式特点:Single类一进内存,就已经创建好了对象。 懒汉式特点:Single类进内存,对象还没存在,只有调用了getInstance方法时,才建立对象。 开发时一般使用饿汉式方法,因为比较安全。 对于懒汉式可以用public static synchronized(同步,锁) Single getInstance ,不过效率会因而减慢。 可以继续改进为: public static Single getInstance() { if (s == null) { synchronized(Single.class) { if (n == null) s = new Single(); } } return s; } 原则:定义单例,建议使用饿汉式。
|