Spring Async и таймшеры

Я пытаюсь создать архитектуру с использованием Java Spring, в которой будет несколько фоновых процессов, которые будут выполняться одновременно, прослушивая и извлекая информацию по мере ее поступления из разных сокетов ZMQ.

Я не уверен, как лучше это сделать. Прямо сейчас я использую аннотацию @Async с TaskPoolExecutor, но функция @Async, похоже, блокирует следующий вызов функции в стеке.

Итак, мои вопросы 1) Будет ли функция @Async блокировать следующий вызов функции в стеке? Или он запустит эту функцию в новом потоке и продолжит выполнение функций в текущем потоке. 2) Есть ли способ предоставить каждому потоку равный временной отрезок вычислительной мощности. 3) Есть ли лучшие способы сделать это?

Спасибо!

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
29
1

Ответы 1

  1. @Async будет запускать аннотированный метод асинхронно, используя указанный исполнитель.
  2. Нет возможности контролировать ресурсы ОС посвящен темам.
  3. Java имеет очень удобный CompletableFuture API для асинхронных вычислений. Я недавно написал сообщение в блоге о проблемах с @Async и о том, как их можно решить с помощью CompletableFuture: Демистификация магии весны: @Async.

Хороший ответ, проголосовали за. Но не уверен, какие исключения охватываются вашим блогом. кажется нормальным сказать, что метод выполняется в отдельном потоке, а поток вызывающего абонента продолжает выполняться.

Nathan Hughes 31.10.2018 15:18

@NathanHughes, перепроверил, исключений нет, отредактировал ответ. Спасибо :)

Ilya Zinkovich 31.10.2018 15:20

Другие вопросы по теме