Зачем нужен класс ThreadLocal в Java и как он позволяет каждому потоку хранить свою отдельную копию переменной? — ДейлиПреп