I was reading the JavaDoc for Threadlocal here
https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ThreadLocal.html
and it says "ThreadLocal instances are typically private static fields in classes that wish to associate state with a thread (e.g., a user ID or Transaction ID). "
But my question is why did they choose to make it static (typically) - it makes things a bit confusing to have "per thread" state but the fields are static?
See Question&Answers more detail:os