On 18/11/14 05:11, Bernd Eckenfels wrote:
....
What do you think? (code from OpenJDK 8:)

179    private T setInitialValue() {
180        T value = initialValue();
181        Thread t = Thread.currentThread();
182        ThreadLocalMap map = getMap(t);
183        if (map != null)
184            map.set(this, value);
185        else
+++            if (value != null)
186                createMap(t, value);
187        return value;
188    }

Interesting idea. If this was to be the case woultn't multiple get() invocations cause multiple initialValue() invocations?

I think storing the null is important to obey the initialValue / remove contract, i.e. initialValue method is invoked at most once per thread, but it may be invoked again in case of subsequent invocations of remove() followed by get().

-Chris.

Reply via email to