【发布时间】:2015-05-09 20:28:13
【问题描述】:
假设我有下一节课:
public class Singleton{
private static Singleton _instance;
public static Singleton getInstance(){
if(_instance == null){
synchronized(Singleton.class){
if(_instance == null)
_instance = new Singleton();
}
}
return _instance;
}
例如,我们有两个线程 A 和 B 尝试同时执行 getInstance() 方法。我是否正确理解了这个过程:
- 线程A进入getInstance()方法并获取锁;
- 线程B也进入getInstance()方法并阻塞;
- 线程A 创建新的Singleton() 对象并释放锁,现在_instance 变量的last 值应该对线程B?或者线程 B 仍然可以拥有自己的 _instance 变量副本,该副本与主内存不同步(_instance=null)?
【问题讨论】:
标签: java multithreading