Это не сработает. Как только ваш метод doGet
завершается, ответ завершается и отправляется обратно клиенту. Ваш поток может продолжаться, а может и не работать, но он больше не может изменить ответ.
Что делает новая асинхронная функция в Servlet 3.0, так это то, что она позволяет освободить поток запросов для обработки другого запроса. Происходит следующее:
RequestThread: |-- doGet() { startAsync() } // Thread free to do something else
WorkerThread: |-- do heavy processing --|
OtherThread: |-- send response --|
Важно то, что как только RequestThread
запустил асинхронную обработку через вызов startAsync(...)
, он может делать что-то еще. Например, он может принимать новые запросы. Это улучшает пропускную способность.