getOrSet
Gets the value in the current thread's copy of this thread-local variable or replaces the value with the result of calling default function in case if that value was null
.
If the variable has no value for the current thread, it is first initialized to the value returned by an invocation of the ThreadLocal.initialValue method. Then if it is still null
, the provided default function is called and its result is stored for the current thread and then returned.