毕老师的课堂笔记,希望对你有帮助,代码注释部分,请自行删除添加,以便测试:
单例设计模式
面试时常见问题:
1,请说说饿汉式和懒汉式的区别?
懒汉式的特点是让实例延时加载
2,懒汉式延时加载有没有问题?
有,如果多线程访问时会出现安全问题
3,怎么解决?
可以加同步解决,用同步函数和同步代码块都行,但同步函数稍微有些低效,用双重判断同步代码块能解决效率问题
4,加同步的时候,使用的锁是哪一个?
该类所属的字节码文件对象- //饿汉式
- /*
- class Single
- {
- private static final 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)
- {
- synchronized(Single.class)
- {
- if(s==null)
- s = new Single();
- }
- }
- return s;
- }
- }
- class SingleDemo
- {
- public static void main(String[] args)
- {
- System.out.println("Hello World!");
- }
- }
复制代码 |