@Async 사용방법

greenTea·2023년 7월 9일
0

@Async 사용방법

🫠코드를 작성하다보면 비동기로 코드를 작성하고 싶을때가 있습니다. 그럴때는 @Async를 사용하시면 간편하게 사용할 수 있습니다. 사용 방법은 아래와 같습니다.

먼저 @Async를 사용하기 위해서는 아래의 어노테이션을 추가해야 합니다.

@EnableAsync


@EnableAsync
@SpringBootApplication
public class MyApplication {
    // ...
}

🤔위 어노테이션이 없다면 async가 작동하지 않으니 주의해야 합니다. 위 코드를 작성한 후에는 정말 쉽게 비동기 코드를 작성 할 수 있습니다.

@Async 사용예시

@Service
public class MyService {

    @Async
    public void myAsyncMethod() {
        // 비동기적으로 실행될 작업
    }
}

😎위 코드에서 myAsyncMethod는 비동기로 작동을 합니다. 이때 @Async의 경우 내부 호출을 하게 되면 작동을 하지 않으니 그 점을 주의해야 합니다. 또한 @Async의 경우 SimpleAsyncTaskExecutor가 기본적으로 동작하는데 SimpleAsyncTaskExecutor의 경우에는 호출이 될 때마다 쓰레드를 생성하게 되는데 만약 많은 양의 트래픽을 처리해야 한다면 아래와 같이 ThreadPoolTaskExecutor를 빈으로 등록해서 설정해주시면 됩니다.

ThreadPoolTaskExecutor 빈 등록

	@Bean("message")
    public Executor googleService() {
        ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
        taskExecutor.setCorePoolSize(2);
        taskExecutor.setMaxPoolSize(5;
        taskExecutor.setQueueCapacity(100;
        taskExecutor.setThreadNamePrefix("Message-");
        taskExecutor.initialize();

        return taskExecutor;
    }

```java
@Service
public class MyService {

    @Async("message")
    public void myAsyncMethod() {
        // 비동기적으로 실행될 작업
    }
}

log로 쓰레드 확인

profile
greenTea입니다.

0개의 댓글