스프링 스레드

LJM·2023년 9월 19일
0

Spring

목록 보기
12/14

스프링 프레임워크는 자바의 멀티스레딩을 더 쉽고 효율적으로 다룰 수 있도록 여러 가지 방법을 제공합니다. 스프링에서 스레드를 다루는 몇 가지 주요 방법은 다음과 같습니다:

  1. @Async 애너테이션

스프링에서는 @Async 애너테이션을 사용하여 비동기 메서드를 쉽게 정의할 수 있습니다. 이 애너테이션을 메서드에 붙이면, 스프링은 그 메서드를 별도의 스레드에서 실행합니다.

@Async
public void doSomething() {
    // 비동기로 실행될 로직
}
  1. TaskExecutor
    스프링은 TaskExecutor 인터페이스를 통해 스레드 풀을 추상화합니다. 이를 통해 스레드 풀의 구현을 쉽게 교체할 수 있습니다. ThreadPoolTaskExecutor는 이 인터페이스의 구현 중 하나입니다.
@Bean
public TaskExecutor threadPoolTaskExecutor() {
    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
    executor.setCorePoolSize(4);
    executor.setMaxPoolSize(10);
    executor.setThreadNamePrefix("my_executor_thread");
    executor.initialize();
    return executor;
}
  1. @Scheduled
    스프링에서는 @Scheduled 애너테이션을 사용하여 주기적인 작업을 쉽게 스케줄링할 수 있습니다.
@Scheduled(fixedRate = 1000)
public void scheduledTask() {
    // 매 초마다 실행될 작업
}
  1. AsyncRestTemplate
    비동기 HTTP 요청을 위해 AsyncRestTemplate을 사용할 수 있습니다. 이를 통해 웹 서비스 호출 등의 I/O 작업을 비동기적으로 처리할 수 있습니다.

  2. WebFlux
    스프링 5에서는 리액티브 프로그래밍 모델을 지원하는 WebFlux를 도입했습니다. 이를 통해 비동기 및 논블로킹 방식으로 웹 애플리케이션을 구축할 수 있습니다.

  3. @EnableAsync
    비동기 작업을 활성화하기 위해 스프링 설정 클래스에 @EnableAsync 애너테이션을 추가할 수 있습니다.

이 외에도 스프링은 AOP, 메시징 큐, 이벤트 리스너 등을 통해 다양한 방식으로 멀티스레딩과 비동기 처리를 지원합니다.

profile
게임개발자 백엔드개발자

0개의 댓글