Если у вас есть несколько задач, но вы хотите ограничить число выполняющих их потоков, используйте ExecutorService
с ограниченным пулом потоков.
Класс Executors
имеет вспомогательный метод для создания того, что вам нужно:
newFixedThreadPool(int nosThreads)
( javado c).
Настройте параметр nosThreads
в соответствии с тем, сколько памяти вы хотите использовать.
В документации ExecutionService
объясняется, как использовать API ( javado c ). Вы отправляете задачи и получаете Future
объектов, которые можно использовать для ожидания завершения данной задачи.
В вашем случае один из ваших веб-запросов может отправить задачу в «глобальную» службу исполнителя и затем дождитесь завершения задачи. В качестве альтернативы вы можете спроектировать свою систему так, чтобы обработка выполнялась асинхронно с веб-запросами; например, отправьте задачу в одном запросе, а затем сделайте другой запрос, чтобы увидеть, было ли это выполнено.