Будет ли Java-разработчик просто раскрутить поток, просто чтобы обработать вызов API и вернуть основной процесс пользователю?
Это зависит.
Еслиесли вы сделаете это, тогда оригинальный поток может сделать что-то еще немного, но если он не предназначен для событий, то в конечном итоге ему нужно будет дождаться завершения вторичного потока ... и вы вернетесь к тому, с чего начали.(На самом деле вам хуже ... потому что теперь у вас 2 ожидающих потока.)
В случае веб-сервера, реализованного с использованием классических сервлетов Java, каждый пользовательский запрос выполняется самостоятельнонить.Простой подход заключается в выполнении вызова API в потоке запросов.Это блокирует поток, но другие потоки могут работать над другими запросами, пока это происходит.Предполагая, что у вас достаточно потоков в пуле потоков веб-контейнера, это работает нормально ... хотя в конечном итоге вы используете много ресурсов (памяти) для стеков потоков.добавлена поддержка асинхронной обработки.Я не слишком разбираюсь в деталях, но теоретически это позволило бы вам отключить поток запроса от запроса, пока последний делал что-то, что занимало много времени.Однако я не уверен, что это поможет здесь ... если только у вас не было реализации API на стороне клиента, которая могла бы аналогичным образом выполнять несколько одновременных запросов, используя небольшое (и ограниченное) количество потоков Java.
Возможно, есть и другие альтернативы, но их может быть гораздо больше.
Мой совет - начать с простого решения.Просто вызовите API в потоке запросов и настройте свой веб-сервер на использование разумного количества потоков запросов.
Скорее всего, вам удастся сойти с рук, потратив немного памяти напропускная способность, которая вам действительно нужна.В более долгосрочной перспективе вам, возможно, придется решить эту проблему, но к тому времени у вас будет время узнать больше о более масштабируемых альтернативах.