Я сомневаюсь в работе асинхронного JAX-RS, который является для меня чем-то новым, и я пытаюсь понять его преимущество.
Я понимаю, что клиент отправляет запрос, запрос делегируется из потока запросчика в рабочий поток, и после завершения обработки ответ отправляется обратно клиенту с помощью AsyncResponse. Я также понял, что на протяжении всего процесса клиент ожидает ответа от сервера. (Таким образом, что касается клиента, то же самое, что и обычный синхронный запрос)
В нем также говорится, что, поскольку поток запроса отправляется рабочему потоку для дальнейшей обработки и, следовательно, благодаря такому подходу потоки ввода / вывода могут свободно принимать новые соединения.
Что я не понял, так это то, что клиент все еще ожидает ответа, и, следовательно, между клиентом и сервером все еще поддерживается активное соединение. Разве это не поддерживается в потоке ввода / вывода? Что значит приостановленный здесь?
Кроме того, даже если дело в том, что поток ввода-вывода освобожден из-за делегирования процесса рабочему соединению с клиентом, все еще работает, как сервер может принимать все больше и больше соединений тогда?
И мой следующий вопрос о пуле потоков, используемом здесь. Потоки ввода-вывода и рабочие потоки из разных пулов? потоки рабочих / процессоров не приходят из пула, управляемого сервером?
Из-за того, что я не понял этого, я подумал о том, чтобы просто иметь отдельный пул для ввода-вывода, а обработка с подключенным клиентом все равно, что блокировка ввода-вывода с обработкой внутри справа
Я не очень хорошо понял эту концепцию.