Создание собственных потоков внутри сервера приложений обычно не рекомендуется, поскольку сервер должен управлять потоками для лучшей масштабируемости. Вы также можете столкнуться с проблемами, если контейнер делает предположения о том, что доступно в контексте потока, например информацию о безопасности (например, аутентифицированный субъект). Обычно это происходит, если вы порождаете поток, а затем используете ресурс сервера из этого потока, который неизвестен контейнеру.
Проверьте, есть ли способ получить потоки, управляемые контейнером, из Tomcat. WebLogic и WebSphere поддерживают commonj.WorkManager, который позволяет планировать работу с потоками, управляемыми контейнером. Spring также может использовать commonj, но я не уверен, доступна ли такая поддержка на Tomcat.