所以这是来自 EventBus getDefault() 静态方法的一段代码,它返回 EventBus 类的静态实例。
/** Convenience singleton for apps using a process-wide EventBus instance. */
public static EventBus getDefault() {
EventBus instance = defaultInstance;
if (instance == null) {
synchronized (EventBus.class) {
instance = EventBus.defaultInstance;
if (instance == null) {
instance = EventBus.defaultInstance = new EventBus();
}
}
}
return instance;
}
我看到代码首先检查实例是否为空,然后在同步块中再次进行相同的检查。这是为什么。
如果我这样写怎么办。
/** Convenience singleton for apps using a process-wide EventBus instance. */
public static EventBus getDefault() {
EventBus instance = defaultInstance;
if (instance == null) {
synchronized (EventBus.class) {
instance = EventBus.defaultInstance = new EventBus();
}
}
return instance;
}
我的版本有问题吗?我在这里缺少什么?