"결과를 언제 받느냐"
동기(Synchronous)
어떤 작업을 요청했을 때, 그 작업이 끝날 때까지 다음 작업이 시작되지 않고 순서대로 처리되는 방식. 앞의 결과가 나와야 뒤의 일이 진행됨.
ex) 결제 버튼을 누르면, 결제가 끝날 때까지 화면이 멈춰 있고 다른 메뉴를 누를 수 없는 경우
비동기(Asynchronous)
작업을 요청하면 결과가 끝날 때까지 기다리지 않고 즉시 다른 작업을 처리할 수 있는 방식. 결과는 나중에 알림(콜백, 이벤트 등)으로 전달됨.
ex) 결제 버튼을 누르면, 결제가 끝날 때까지 기다리지 않고 바로 다른 메뉴를 볼 수 있는 경우.
카페에서 커피 주문 후, 커피가 나올 때까지 카운터 앞에서 서서 기다리는 것. (=동기)
커피 주문 후, 진동벨을 받고 자리에 앉아 다른 일을 하다가 커피가 준비되면 벨이 울려 찾으러 가는 것. (=비동기)
비교
| 구분 | 동기 (Synchronous) | 비동기 (Asynchronous) |
| 동작 방식 | 순서대로 진행, 앞이 끝나야 다음으로 | 요청 후 즉시 다른 일 진행 |
| CPU 활용 | 대기 시간 동안 CPU 자원 낭비 | 대기 시간 동안 다른 작업 처리 가능 |
| 구현 난이도 | 단순, 직관적 | 복잡, 결과 관리(콜백·이벤트 처리)가 필요 |
| 적합한 경우 | 작은 규모, 직관성이 중요한 경우 | 대규모 동시성, 대기 시간이 긴 작업이 많은 경우 |
'CS 정리' 카테고리의 다른 글
| 큐잉(Queuing)과 라우팅(Routing) (0) | 2025.09.22 |
|---|---|
| 논동기와 비블로킹 (1) | 2025.09.05 |
| 블로킹(Blocking) & 논블로킹(Non-Blocking) (0) | 2025.09.02 |
| Feign 사용해보기 (1) | 2025.08.11 |
| Java + Kotlin 혼용 개발 (0) | 2025.07.31 |