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 Optional
ConcurrentMap<Integer, String> indicator = cache.get(num1);
return (indicator == null) ? Optional.empty() : Optional.ofNullable(indicator.get(num2));
}
兩個方法比較之下,get的執行時間和記憶體使用量都優於createAndGet。
故初始化時使用createAndGet,後續都取cache值都用get。