Сразу после предыдущей статьи великий бог прокомментировал, что на основеWebSyncTask
Асинхронная обработка задач и аннотации@Async
В чем разница между асинхронной обработкой задачи, на самом деле, когда великий бог прокомментировал, я не знал разницы, поэтому пошел изучать волну! Пользуясь случаем, резюмирую следующее:
1. Аннотация асинхронные этапы разработки задач весной
- 1. Добавьте в класс конфигурации
@@EnableAsync
Annotation и убедитесь, что Spring может сканировать, чтобы получить аннотацию. - 2. Определение асинхронной задачи с использованием
@Async
определение - 3. Наконец, вы можете вызвать асинхронную задачу так же, как вызов обычного метода.Для значения асинхронной задачи с возвращаемым результатом вы можете передать
FutureResult
Получать
Для примера кода задачи асинхронного программирования, основанного на аннотациях, небольшие серии имеют код в коде сообщения блога:
Кодовый адрес:GitHub.com/smallercode…
Ха-ха, дайте мне начать!
Во-вторых, основной принцип асинхронных задач
Концепция асинхронности также упоминалась ранее. Очень простая причина в том, что я ищу вас, чтобы делать что-то. Мне не нужно ждать, пока вы закончите что-то, и я могу уйти, чтобы заняться другими делами. Например , когда вы отправляете WeChat своему другу, точнее будет сказать, что это сообщение.После того, как ваш друг увидит его, он может уведомить вас, что дело сделано. Конечно, для ответов веб-запроса под асинхронностью можно понимать освобождение потока, обрабатывающего в данный момент запрос, тайное открытие потока в фоновом режиме для выполнения и возврат после завершения выполнения, чтобы поток, обрабатывающий запрос, мог обрабатывать другие входящие потоки. Запросы.
Причина, по которой nginx так хорош в параллелизме, заключается в том, что я думаю, что linuxepoll
Модель может быть понята. Кроме того, вы можете понятьservlet 3.0
Позже поддержка Async.
3. Типы асинхронных задач
Поскольку поток, обрабатывающий запрос, был освобожден, наш поток асинхронной задачи должен быть связан с контекстом текущего запроса, чтобы нормально отвечать на данные. Асинхронные задачи не всегда проходят гладко, могут быть следующие три ситуации:
- 1. Может выполняться нормально и не иметь возвращаемого значения,
void
утверждение - 2. Он может вернуть некоторый результат
- 3, он может выдать информацию об исключении, тогда нам нужно обработать ненормальную
Для обработки возвращаемого значения
использоватьResultFuture
вернутьFuture
объект, черезFuture
объектget
метод для получения возвращаемого значения.
Обработка информации об исключении
Аннотационная асинхронная задача исключенияWebAsynctask
Разное бывное использованиеAsyncConfigurer
Объедините пользовательские классы исключенийAsyncUncaughtExceptionHandler
класс реализации для обработки.
Спасибо за чтение. Все реализации кода, упомянутые выше, можно увидеть по указанному выше адресу github. Если есть какие-либо ошибки, пожалуйста, приветствуйте пр. Если это полезно для вас, пожалуйста, поставьте звезду, хорошо!