Sobes.tech
Назад к вопросам
Senior
4

Как в Java или Spring выполнить код асинхронно в другом потоке?

Компании, где спрашивали
Альфа-БанкАльфа-Банк

Ответ от нейросети

sobes.tech AI

В Java с использованием Spring Framework можно выполнить код асинхронно, применив аннотацию @Async. Для этого нужно:

  1. Включить поддержку асинхронного выполнения, добавив @EnableAsync в конфигурационный класс.
  2. Пометить метод, который должен выполняться асинхронно, аннотацией @Async.

Пример:

import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Service;

@EnableAsync
@Service
public class AsyncService {

    @Async
    public void asyncMethod() {
        System.out.println("Выполняется в другом потоке: " + Thread.currentThread().getName());
        // Долгая операция
    }
}

Вызов asyncMethod() не блокирует вызывающий поток, а выполняется в пуле потоков Spring.

Важно, чтобы вызов асинхронного метода происходил из другого бина или через прокси, иначе аннотация не сработает.