懒汉式设计模式在多线程下是不管用了,假如在多线程下,一个线程进入if(singleton==null)
判断语句块,还未来得及往下执行,另一个线程也通过了这个判断语句,这是可能会产生多个实例。
在实际的开发中,不要使用这种设计模式。如果要解决这类问题,应该在该方法定义中
加入sychronized,让线程排队执行。但是这种方式效率太低了,其实getinstance()
方法执行一次就够了,后面如果想获得该类实例,直接return就行了。在实际开发中
,不推荐使用这种方式。
静态内部类是推荐使用的。
判断语句块,还未来得及往下执行,另一个线程也通过了这个判断语句,这是可能会产生多个实例。
在实际的开发中,不要使用这种设计模式。如果要解决这类问题,应该在该方法定义中
加入sychronized,让线程排队执行。但是这种方式效率太低了,其实getinstance()
方法执行一次就够了,后面如果想获得该类实例,直接return就行了。在实际开发中
,不推荐使用这种方式。
静态内部类是推荐使用的。
全部评论
相关推荐
11-08 00:11
复旦大学 深度学习 点赞 评论 收藏
分享