
동기(Sync)는 요청과 응답의 순서가 보장된다. 이전 요청에 대한 응답이 마무리 되기 전까지는 다음 요청을 처리 할 수 없다. 반대로 비동기(Async)는 요청과 응답의 순서 상관없이 이전 요청에 대한 응답이 마무리 되기 전에 요청이 가능하고 응답 순서도 지키지 않아도 된다.
- 작업을 동시에 할 수 없고 한가지 작업이 끝나야 다음 작업을 하는 방식.
- 웹페이지 전체를 업데이트 하는 방식
(ex : 게시글을 작성하고 "출간하기" 버튼을 누르면 게시글이 올라간 페이지가 나타나기 전까지 다른 작업을 할 수 없는 경우)

- 모든 작업을 동시에 처리할 수 있는 방식
- 웹페이지 일부만 업데이트하는 방식
(ex: 게시글에 댓글을 작성할 때 전체 페이지를 새로고침 하지 않아도 댓글 부분만 없데이트 되는 경우)

| Annotation | Description |
|---|---|
@EnableAsync | 활성 비동기 처리를 가능하게 하는 어노테이션. |
@Async | 메서드를 비동기적으로 실행하도록 지정하는 어노테이션. |
@Async("customExecutor") | 특정 Executor를 사용하여 메서드를 비동기적으로 실행하도록 지정하는 어노테이션. |
@Async("customExecutor") | 특정 Executor를 사용하여 메서드를 비동기적으로 실행하도록 지정하는 어노테이션. |
@EnableScheduling | 스케줄링 기능을 가능하게 하는 어노테이션. |
@Scheduled | 주기적으로 메서드를 실행하도록 지정하는 어노테이션. |
@Scheduled(cron = "...") | cron 표현식을 사용하여 주기적으로 메서드를 실행하도록 지정하는 어노테이션. |
@Async("customExecutor") | 특정 Executor를 사용하여 메서드를 비동기적으로 실행하도록 지정하는 어노테이션. |
동기와 비동기
SpringBoot 비동기 처리