Когда вы создаете переменную ThreadLocal, каждый поток, который к ней обращается, имеет свой отдельный экземпляр этой переменной. Это означает, что каждый поток может хранить разное значение для одной и той же переменной ThreadLocal, и когда он обращается к переменной, он получает значение, установленное для этого конкретного потока.
Всегда знал что жава крута. Мне на tcl приходится хреначить. Эт пиздец товарищи