アプリケーションの実行中に情報を格納するために使用されるプライベート静的マップを持つ Java クラスがあります。キー/値を Map に入れるのは 1 回だけですが、マップの値は何度も読み取られる可能性があります。
したがって、私が今持っている方法では、コードは get を実行し、null をチェックします。null の場合は、必要なデータを収集してマップに配置します。クライアント コードによる後続の呼び出しでは、マップから値を取得することが保証されます。クライアントは null チェックを行う必要はありません。
この理由は、マップに配置するデータを取得するとコストがかかる可能性があるため、これをキーごとに 1 回だけ実行したいからです。
これには何かパターンがありますか?この状況について議論しているものを見つけることができないようです。
ティア
完全にスレッドセーフではない例を次に示します。
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;
}
}