Распространение ThreadLocal на новый поток, полученный из ExecutorService

Я запускаю процесс в отдельном потоке с тайм-аутом, используя ExecutorService и Future (пример кода здесь ) (поток «порождается» происходит в аспекте АОП).

Теперь основным потоком является запрос Resteasy .Resteasy использует одну или несколько переменных ThreadLocal для хранения некоторой контекстной информации, которую мне нужно получить в какой-то момент при вызове моего метода Rest. Проблема в том, что поскольку поток Resteasy работает в новом потоке, переменные ThreadLocal теряются.

Как лучше всего «распространить» любую переменную ThreadLocal, используемую Resteasy, в новый поток? Кажется, что Resteasy использует более одной переменной ThreadLocal для отслеживания контекстной информации, и я хотел бы «вслепую» передать всю информацию новому потоку.

Я рассмотрел создание подкласса ThreadPoolExecutor и использование метода beforeExecute для передачи текущего потока в пул, но я не смог найти способ передать переменные ThreadLocal в бассейн.

Есть предложения?

Спасибо

29
задан AlikElzin-kilaka 23 April 2018 в 08:36
поделиться