Многопоточность middle
ThreadLocal — где пригодится и где опасен?
Ответ
Для контекста (например, SecurityContext, транзакционный контекст). Опасен с пулами потоков — значение протекает между задачами, нужен remove() в finally.
Разбор: ThreadLocal даёт каждому потоку собственную копию значения и хорошо подходит для контекста (SecurityContext, транзакционный контекст). Главная опасность — пулы потоков: поток переиспользуется, и оставленное значение «протекает» в следующую задачу, поэтому нужен remove() в finally. Дистракторы путают ThreadLocal с общим конфигом, приписывают ему роль volatile и несуществующее «переполнение» и ложно утверждают, что remove() не нужен — записи в ThreadLocalMap как раз и текут в пулах.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.