$ java ComputeIfAbsentRecursionDemo === ConcurrentHashMap: computeIfAbsent recursing into a DIFFERENT key === no exception, result = 99, map = {1=99, 2=99} === HashMap: computeIfAbsent recursing into a DIFFERENT key (single-threaded!) === threw java.util.ConcurrentModificationException: null === ConcurrentHashMap: computeIfAbsent recursing into the SAME key === threw java.lang.IllegalStateException: Recursive update