Я столкнулся с асинхронной обработкой запросов сервлетами, поскольку я изучал, как приложение NodeJS и приложение Java обрабатывают запрос.
Из того, что я читал в разных местах:
Запрос будет получен и обработан потоком HTTP из контейнера сервлетов, а в случае операций блокировки (например, ввода-вывода) запрос может быть передан другому потоку Threadpool, и HTTP-поток, который получил запрос, может пойти назад для получения и обработки следующего запроса.
Отнимающая много времени операция блокировки теперь будет занята рабочим из Threadpool.
Если я правильно понял, у меня есть следующий вопрос:
Даже поток, который обрабатывает операцию блокировки, будет ждать завершения этой операции и, следовательно, блокирует ресурсы (и количество обработанных потоков равно количеству ядер), если я прав.
В чем именно выигрыш здесь при использовании асинхронной обработки?
Если нет, просветите меня, пожалуйста.