java.lang.ThreadLocal
that are not declared static final
.
In the most common case, a java.lang.ThreadLocal
instance associates state with a thread.
A non-static non-final java.lang.ThreadLocal
field associates state with an instance-thread combination.
This is usually unnecessary and quite often is a bug that can cause memory leaks and incorrect behavior.
A quick-fix is suggested to make the field static final
.
Example:
private ThreadLocal tl = ThreadLocal.withInitial(() -> Boolean.TRUE);