1. 비동기 프로그래밍 간단히 알아보기


1.1 간단한 동기, 비동기식 프로그래밍 살펴보기

작업을 순차적으로 실행하는 동기식 프로그래밍은 코드 흐름을 이해하기 쉽지만 장시간 실행되는 작업이 있을 경우 전체 프로그램의 응답성을 저하시킬 수 있다. 반면 비동기식 프로그래밍은 작업을 병렬로 실행하여 하나의 작업이 완료될 때까지 다른 작업을 기다리지 않는다. 이를 통해 프로그램의 응답성을 높이고, 시스템 자원을 효율적으로 사용할 수 있다.

@Test
fun sync() {
    println("시작")
    executeLongMethod()
    println("종료")
}

@Test
fun async() {
    println("시작")
    val thread = Thread { executeLongMethod() }
    thread.start()
    println("종료")
    thread.join()
}

private fun executeLongMethod() {
    Thread.sleep(3000)
    println("긴 작업 완료")
}

sync 메서드의 경우

async 메서드의 경우

2. Spring에서의 @Async


2.1 @Async란?

@Async 어노테이션은 스프링에서 제공하는 에노테이션으로, 특정 메서드를 비동기로 실행할 수 있게 도와준다. 이를 통해 특정 메서드를 메인 스레드와 별개로 처리할 수 있게 해준다.

[@Async의 특징]