我有一个带有私有静态映射的 Java 类,用于在应用程序执行期间存储信息。我只会将一个键/值放入 Map 中,但 Map 值可能会被读取多次。
所以我现在拥有它的方式,代码执行获取并检查是否为空。如果为空,那么我收集我需要的数据并将其放入地图中。客户端代码的后续调用将保证从映射中获取值。客户端不需要进行空值检查。
这样做的原因是,将数据放入地图可能会很昂贵,所以我只想对每个键执行一次。
这有什么模式吗?我似乎找不到任何讨论这种情况的东西。
TIA
这是一个完全非线程安全的示例:
public class TestWorm {
private static Map<String, Object> map = new HashMap<String, Object>(32);
public Object getValue(String key) {
if (map.get(key) != null) {
return map.get(key);
}
// do some process to get Object
Object o = new Object();
map.put(key, o);
return o;
}
}