下面的代码线程安全吗?
private static HashMap<String, String> cache = null;
public static String getInfo(String key) {
populateCache();
return cache.containsKey(key) ? cache.get(key) : null;
}
private static void populateCache() {
if (cache == null) {
cache.put("hello", "world");
// ... more population logic here
}
}
如果没有,我该怎么做才能使其线程安全?
编辑:感谢您的回答,我将尝试 ConcurrentHashMap。但是,我错过了一些东西。我实际上在这里将一个单独的 Foo 类的对象传递给 getInfo() :
public static Bar getInfo(Foo object) {
object.someProperty = concurrentHashMapCache.get('something');
return Bar.createFromFoo(object);
}
只要不同的线程将不同的 Foo 对象传递给 getInfo,上面的代码应该可以工作,对吧?