
동기와 비동기의 차이점은 무엇인가요?CS/매일메일2025. 1. 23. 22:32
Table of Contents
📖 동기와 비동기의 차이점은 무엇인가요?
동기와 비동기는 호출하는 함수의 작업 완료를 기다리는지 여부의 차이가 있습니다.
함수 A가 동기로 함수 B를 호출하면 A는 B의 작업이 완료될 때까지 기다려야 합니다. 따라서 작업이 순차적으로 진행됩니다.
반면, 함수 A가 비동기로 함수 B를 호출하면 A는 B의 작업 완료를 신경 쓰지 않고 따로 동작합니다. 따라서 작업이 순차적으로 진행되지 않습니다
블로킹과 동기는 어떤 차이가 있나요? 🤔
두 개념은 유사하면서도 다릅니다.
동기 호출에서는 호출된 함수가 작업을 완료할 때까지 호출한 함수가 기다립니다.
즉, 작업이 순차적으로 진행되는 것을 의미합니다.
반면 블로킹은 함수가 호출된 후, 호출한 함수의 결과를 기다리기 위해 실행을 멈추는 상태를 의미합니다.
즉, 제어권이 반환되지 않고 대기하는 상황입니다.
스프링에서 비동기 처리는 어떻게 하며 무엇을 주의해야 하나요?
스프링에서는 @Async 어노테이션을 사용하여 비동기 처리를 수행할 수 있습니다. 해당 어노테이션을 사용하기 위해서는 몇 가지 주의할 부분이 있습니다.
기본적으로 @Async 가 적용된 메서드에서 발생하는 예외는 호출자에게 전파되지 않습니다.
비동기 메서드에서 예외를 정상적으로 처리하기 위해서는 별도의 비동기 예외 처리기를 사용해야 합니다.
또한 @Async 어노테이션은 프록시 기반으로 동작하기 때문에 같은 클래스 내부에서 직접 호출하는 경우, 별도의 스레드에서 메서드가 실행되지 않습니다.
그리고, 비동기 메서드 내에서 생성한 트랜잭션은 상위 트랜잭션과 무관한 생명주기를 가집니다.
추가 학습 자료
- [10분 테코톡] 호기의 blocking VS non-blocking, sync VS async
- [10분 테코톡] 멍토의 Blocking vs Non-blocking, Sync vs Async
- [테코블] 동기와 비동기 with webClient
- [Spring] @Async 와 스레드
참고
'CS > 매일메일' 카테고리의 다른 글
서버 사이드 렌더링과 클라이언트 사이드 렌더링의 차이점은 무엇인가요? (0) | 2025.01.23 |
---|---|
WAS와 웹 서버의 차이점은 무엇인가요? (0) | 2025.01.22 |
HTTPS에 대해서 설명해주세요 (0) | 2025.01.19 |
매일메일 서비스 이용 (2) | 2025.01.19 |
@킴준현 :: 차근차근 꾸준히
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!