Способ ограничить количество потоков - не создавать их напрямую.
Вместо этого используйте пул потоков с фиксированной верхней границей количества потоков.
Современный способ сделать это - использовать ExecutorService
API ( javado c) и создать экземпляр службы, используя либо Executors.newFixedThreadPool(...)
( javado c*) 1010 *) или напрямую, используя одну из множества ThreadPoolExecutor
( javado c) перегрузок конструктора.
В этом случае мы рассматриваем количество потоков значение 20 или 5 для работы со свойством server.tomcat.max-threads?
Потоки, созданные приложением или пулом потоков приложения при обработке запроса, не считаются «рабочими потоками» для целей этого свойства конфигурации Tomcat.
Приложение или его пул потоков могут управлять любыми потоками, которые оно создает, и обеспечивать:
- количество этих потоков не становится слишком большим,
- они не потребляют слишком много ресурсов (процессор, память и т. Д. c), а
- они не становятся «осиротевшими» и в итоге тратят ресурсы на задачу, которая больше не нужна; например, из-за истечения времени ожидания исходного запроса клиента.
Помните, что подобные вещи могут легко превратиться в проблему отказа в обслуживании.