单例设计模式面试题
2018-03-01 00:28
381 查看
单例设计模式分为两种分为 : 饿汉式 懒汉式 。
1. 懒汉式与饿汉式有什么不同?
答:懒汉式的特点在于实例延迟加载。
2.懒汉式延迟加载有木有问题?如果有怎么解决?
答:有,如果多线程访问时,会出现安全问题;
解决办法:可以加同步来解决,而加同步的方式同步代码块与同步方法都行,但是稍微有一些低效;用双重判断的形式能解决效率问题。
3.加同步的时候使用的锁是哪一个?
答:该类所属的字节码文件对象(类名.class)。
----------------------------------------------------------------------------------
饿汉式示例: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;
}
}
1. 懒汉式与饿汉式有什么不同?
答:懒汉式的特点在于实例延迟加载。
2.懒汉式延迟加载有木有问题?如果有怎么解决?
答:有,如果多线程访问时,会出现安全问题;
解决办法:可以加同步来解决,而加同步的方式同步代码块与同步方法都行,但是稍微有一些低效;用双重判断的形式能解决效率问题。
3.加同步的时候使用的锁是哪一个?
答:该类所属的字节码文件对象(类名.class)。
----------------------------------------------------------------------------------
饿汉式示例: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;
}
}
相关文章推荐
- PHP面试题之设计模式
- 最全Android面试题大集合(Android、Java、计算机基础、设计模式)持续更新
- 李洪强经典面试题150-设计模式
- c#设计模式-单例模式(面试题)
- Java设计模式之四(经典面试题:工厂模式在开发中的运用)
- 两道设计模式的面试题
- Java设计模式之四(经典面试题:工厂模式在开发中的运用)
- 一道面试题想到的设计模式(观察者模式)
- JAVA学习33_Java 设计模式面试题
- [Java面试]六:常见面试题之设计模式
- 常见设计模式面试题
- PHP经典面试题之设计模式(经常遇到)
- 两道设计模式的面试题
- java基础知识记录--软件工程与设计模式(摘自张孝祥整理java面试题)
- Java常见设计模式面试题
- Java设计模式面试题2则
- 【JAVA面试题】设计单例模式的多线程实现
- 【面试题】设计模式相关
- 设计模式常见面试题
- 剑指Offer算法题之设计模式的单例模式--面试题2:实现Singleton模式