java 单例模式双重if判断理解
2017-05-18 本文已影响0人
青晨点支烟
代码如下:
内层判断:如果内层不加if判断,就会实例化多次,这是显而易见的,这就违背了单例模式的单例二字。
外层判断:试图想想一种情况,当线程1走完了内层判断,对象实例化了,线程3也调用了getInstace函数,如果没有加外层的判断线程3还是要继续等待线程2的完成,而加上外层判断,就不需要等待了,直接返回了实例化的对象。
我的理解:外层的判断是为了提高效率,里层的判断就是第一次实例化需要。
代码如下:
内层判断:如果内层不加if判断,就会实例化多次,这是显而易见的,这就违背了单例模式的单例二字。
外层判断:试图想想一种情况,当线程1走完了内层判断,对象实例化了,线程3也调用了getInstace函数,如果没有加外层的判断线程3还是要继续等待线程2的完成,而加上外层判断,就不需要等待了,直接返回了实例化的对象。
我的理解:外层的判断是为了提高效率,里层的判断就是第一次实例化需要。