首页 > 编程语言 > 详细

java-重新理解:“instance = new Singleton();”

时间:2015-04-13 12:46:59      阅读:348      评论:0      收藏:0      [点我收藏+]

在Java指令中创建对象和赋值操作是分开进行的,也就是说instance = new Singleton();

语句是分两步执行的。但是JVM并不保证这两个操作的先后顺序,也就是说有可能JVM会为

新的Singleton实例分配空间然后直接赋值给instance成员,然后再去初始化这个Singleton实例。

这在单态设计模式的多线程中,会经常出错。

当一个A线程,执行完该语句但没有初始化这个实例,而B线程调用了该实例,则会报错。

 

单例模式使用内部类来维护单例的实现,JVM内部的机制能够保证当一个类被加载的时候,这个类的加载过程是线程互斥的。

java-重新理解:“instance = new Singleton();”

原文:http://www.cnblogs.com/beyondbycyx/p/4421646.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!