【发布时间】:2014-05-22 17:43:23
【问题描述】:
我有以下代码:
class SomeClass {
private Map<String, String> someMap = null;
public String getValue(String key) {
if (someMap == null) {
someMap = initialize(); // initialize() is some method which returns a proper map.
}
return someMap.get(key);
}
}
假设我不关心someMap 被多次初始化,这里是否还有其他需要关注的线程安全问题。
根据 what-operations-in-java-are-considered-atomic ,引用分配肯定是 atmoic。对someMap 的分配是否保证在对initialize() 的方法调用之后发生(对我来说似乎合乎逻辑)。线程是否有可能看到部分构造的someMap。如果我有一些其他类型的对象而不是地图,这有关系吗?
【问题讨论】:
标签: java multithreading thread-safety