...
public void foo() { final int x = dataSource.getCount(); // do things with x // ... }
ThreadLocal
Be careful when using ThreadLocal (or InheritableThreadLocal). Without careful consideration, ThreadLocal ThreadLocal is a nice Java construct that allows you to isolate state across different threads (https://docs.oracle.com/javase/7/docs/api/java/lang/ThreadLocal.html). However, uncareful usage of ThreadLocal (or InheritableThreadLocal) can easily lead to memory leaks. As a rule of thumb, they are safe to use if the thread executing the code is short lived. Otherwise, care must be made to remove the ThreadLocal once it is no longer needed.
...