Многопоточность middle
ThreadLocal — опасность?
Ответ
С пулами потоков: поток переиспользуется, ThreadLocal остаётся от предыдущей задачи (утечка данных/памяти). Обязательно: try { ... } finally { threadLocal.remove(); }. В Reactor/WebFlux — не работает, нужен Context.
Разбор: В пуле потоки переиспользуются, и значение ThreadLocal от предыдущей задачи остаётся доступным следующей — это и утечка данных, и утечка памяти, поэтому обязателен remove() в finally. Никакого автоочищения executor не делает; таблица threadLocals принадлежит конкретному потоку, а не разделяется. В реактивном стеке выполнение перескакивает между потоками, поэтому ThreadLocal ненадёжен — нужен Reactor Context.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.