Назад к вопросам
Альфа-Банк
Senior
4
Как в Java или Spring выполнить код асинхронно в другом потоке?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Java с использованием Spring Framework можно выполнить код асинхронно, применив аннотацию @Async. Для этого нужно:
- Включить поддержку асинхронного выполнения, добавив
@EnableAsyncв конфигурационный класс. - Пометить метод, который должен выполняться асинхронно, аннотацией
@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.
Важно, чтобы вызов асинхронного метода происходил из другого бина или через прокси, иначе аннотация не сработает.