Асинхронное программирование Spring / Spring boot на основе аннотации @Async

Spring Boot задняя часть GitHub Spring
Асинхронное программирование Spring / Spring boot на основе аннотации @Async

Сразу после предыдущей статьи великий бог прокомментировал, что на основеWebSyncTaskАсинхронная обработка задач и аннотации@AsyncВ чем разница между асинхронной обработкой задачи, на самом деле, когда великий бог прокомментировал, я не знал разницы, поэтому пошел изучать волну! Пользуясь случаем, резюмирую следующее:

1. Аннотация асинхронные этапы разработки задач весной

  • 1. Добавьте в класс конфигурации@@EnableAsyncAnnotation и убедитесь, что 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. Если есть какие-либо ошибки, пожалуйста, приветствуйте пр. Если это полезно для вас, пожалуйста, поставьте звезду, хорошо!