Share Cache CreateAndGet Versus Get

Share Cache CreateAndGet Versus Get

這篇介紹Cache CreateAndGet Versus Get。

Example

private ConcurrentMap<Integer, ConcurrentMap<Integer, String>> cache = new ConcurrentHashMap<>();

createAndGet:

public final String createAndGet(Integer num1, Integer num2) {
return cache.computeIfAbsent(num1, x -> new ConcurrentHashMap<>()).computeIfAbsent(num2,
x -> “TEST”);
}

Get:

public final Optionalget(Integer num1, Integer num2) {
ConcurrentMap<Integer, String> indicator = cache.get(num1);

return (indicator == null) ? Optional.empty() : Optional.ofNullable(indicator.get(num2));

}

兩個方法比較之下,get的執行時間和記憶體使用量都優於createAndGet。
故初始化時使用createAndGet,後續都取cache值都用get。