Короче говоря, tomcat использует пул потоков, поэтому потоки используются повторно. Некоторые библиотеки используют переменные ThreadLocal
, но не очищают их (используя .remove ()
), поэтому фактически они возвращают «грязные» потоки в пул.
Tomcat имеет новые возможности обнаружения этих вещей при завершении работы и очистки локальных переменных потока. Но это означает, что потоки "грязные" на протяжении всего выполнения.
Что я могу сделать, так это реализовать Фильтр
, и сразу после завершения запроса (и потока возврата в пул) очистить все ThreadLocal
с использованием кода из tomcat (там метод называется checkThreadLocalsForLeaks
).
Вопрос в том, стоит ли оно того? Два преимущества: