Я думаю, я действительно не понимаю понятия асинхронного сервлета. Прежде всего, почему мы должны были отметить asyncSupport = true
? Является ли это true/false
Я могу создать ThreadPool
и добавить к нему задачу, чтобы выполнить эту задачу асинхронно, не так ли? Так в чем же разница, чего я не могу достичь без asyncSupport
? Любой пример оценивается.Async Servlet - что он на самом деле дает?
0
A
ответ
1
AsyncContext
удобно, когда вам нужно поддерживать соединение до тех пор, пока у вас не будет данных, которые будут возвращены через некоторое время в будущем без блокировки потока.
В одном проекте у меня был удаленный клиент, который подключался к серверу и ждал (длинный таймаут) для команды с сервера. Так называемый длинный опрос. После того, как у сервера есть данные для отправки, он принимает AsyncContext
и берет ответ. Это очень удобно, поскольку в противном случае нам нужно будет заблокировать поток.
Смежные вопросы
- 1. scala.concurrent.blocking - что он на самом деле делает?
- 2. Expression.Bind() - что он на самом деле делает?
- 3. DBSlayer - что он на самом деле делает?
- 4. async Task - Что на самом деле происходит на процессоре?
- 5. Что на самом деле $ RPM_BUILD_ROOT?
- 6. Android Bootstrap, что это на самом деле, что он делает?
- 7. Что на самом деле означает?
- 8. Что на самом деле возвращает C#?
- 9. Что делает - >> на самом деле?
- 10. Что на самом деле делает «__COMPAT_LAYER»?
- 11. Wordpress вредоносный код, что он на самом деле делает?
- 12. php session_destroy() что он на самом деле делает?
- 13. Оператор Java DOT, что он на самом деле делает
- 14. (.net) CriticalFinalizerObject - Что он на самом деле делает?
- 15. Что на самом деле произошло за Path.Combine
- 16. Что на самом деле вызывает вызов Session_Start?
- 17. Что такое dist() на самом деле вычисление?
- 18. Что на самом деле делает addChildViewController?
- 19. Что на самом деле означает PermGen?
- 20. Что делает очистка TortoiseSVN на самом деле?
- 21. Что такое DOMString на самом деле?
- 22. что на самом деле создали дженкинсы?
- 23. Что это на самом деле в Java?
- 24. Что делает ifstream :: rdbuf() на самом деле?
- 25. Что делает regsvr32 filename.ax на самом деле?
- 26. Что делает NSLog на самом деле?
- 27. Что на самом деле в known_hosts?
- 28. Что на самом деле применяет фильтр?
- 29. Что на самом деле делает OperationContext.Current.GetCallbackChannel?
- 30. Что соответствует = "/" на самом деле возвращается?
Так, чтобы было ясно. Когда я не использую поддержку async, то использование 'ThreadPool' будет выполнять задачу, но ответ будет отправлен, как только основной поток сервлета достигнет конца метода doGet/doPost, и я не могу сообщить клиенту о результате этого процесса, правильно? С другой стороны, если я использую поддержку async, ответ будет отправлен после завершения работы async. Так что, собственно, с точки зрения браузера нет ничего асинхронного в этом отношении? Как будет обрабатываться запрос на стороне сервера, и этот основной поток Servlet вернется в пул потоков и будет готов к следующему запросу? – abc
Да, это правильно, прежде чем поддержка async ответ будет получен после того, как вы вернетесь из doGet/doPost. Но с асинксом у вас есть выбор. С точки зрения браузера ничего не меняется, это просто более удобный API для обработки запросов на стороне сервера. –