- //饿汉式单实例,实际开发中使用
- class HungrySingle
- {
- private HungrySingle(){} //私有化构造函数,使得外部调用者无法实例该类
- private static final HungrySingle hs = new HungrySingle(); //自己new一个实例
- public static HungrySingle getInstance() //把实例返回给调用者
- {
- return hs;
- }
复制代码- //懒汉式
- class LazySingle
- {
- private LazySingle(){}
- private static LazySingle ls = null;
- public static LazySingle getInstance()
- {
- if(ls == null)
- {
- synchronized(LazySingle.class)
- {
- if(ls == null)
- ls = new LazySingle();
- }
- }
- return ls;
- }
- }
复制代码 懒汉式在实际开发中少使用,但是一定要会写,面试考单例设计肯定是考懒汉式,涉及考点:为何要引入同步(多线程访问时会有安全隐),为何这里选用同步代码块而不选用同步函数(增加程序的运行效率),同步使用的是什么锁(字节码文件的Class类,格式:类名.calss)
|
|