码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-04-13 12:48:10      阅读:423      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!