Многопоточность trainee
Для чего нужен ThreadLocal?
Ответ
Хранение значения, уникального для каждого потока. Например, traceId, MDC для логов, контекст транзакции. В рамках одного потока — данные доступны без передачи через параметры. В пулах нужно вызывать remove(), иначе возможны утечки.
Разбор: ThreadLocal даёт каждому потоку собственную независимую копию значения (traceId, MDC, контекст транзакции), доступную без передачи через параметры. Дистракторы ошибочны: ThreadLocal не синхронизирует доступ к общему объекту (наоборот, изолирует копии), не очищается сам в пулах (нужен remove(), иначе утечки), а наследование значений даёт лишь InheritableThreadLocal, и то на момент старта дочернего потока.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.