Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Graph
- 윤성우의 열혈 자료구조
- stream
- list 컬렉션
- C 언어 코딩 도장
- 이것이 자바다
- Serialization
- s
- 혼자 공부하는 C언어
- C programming
- coding test
- Stack
- 알기쉬운 알고리즘
- datastructure
- insertion sort
- R
- buffer
- 메모리구조
- Algorithm
- JSON
- Selection Sorting
- 이스케이프 문자
- 윤성우 열혈자료구조
Archives
- Today
- Total
Engineering Note
동기(Synchronous) vs 비동기(Asynchronous) 본문
동기 vs 비동기, 커피 주문으로 이해하기 + 콜백함수
동기(Synchronous): 요청한 작업이 끝날 때까지 기다렸다가 다음 일을 진행하는 방식
비동기(Asynchronous): 요청한 작업을 기다리지 않고, 다음 일을 먼저 진행하고 결과는 나중에 받는 방식
커피 주문 상황으로 이해해보기
손님과 바리스타가 있다고 해보자.
손님이 커피를 주문했는데, 바리스타가 원두가 떨어진 걸 발견하고 원두를 외부에 주문한다.
이때 **"원두 주문"**을 작업 요청이라고 보면,
- 동기 처리는:
바리스타가 원두가 도착할 때까지 가만히 기다리며,
다른 손님의 주문은 받지 않는 상황이다. - 비동기 처리는:
바리스타가 원두를 주문해두고, 도착하기를 기다리는 동안
다른 손님의 주문을 받고 커피를 만드는 작업을 계속하는 것이다.
비동기에서 콜백 함수란?
비동기 방식에서는 작업을 요청한 후 결과가 언제 도착할지 모르기 때문에, 응답이 오면 실행할 함수를 미리 등록해두어야 한다.
이렇게 결과가 도착했을 때 실행될 함수를 콜백 함수(callback function) 라고 한다.
Java에서는 콜백 함수를 전달할 때 보통 람다(lambda) 표현식을 사용하며,
JavaScript에서는 함수 자체를 변수처럼 전달할 수 있기 때문에, 콜백 함수를 함수 인자로 넘기는 방식이 자연스럽게 사용된다.
예시 요약
Java:
service.doAsync(data -> System.out.println("응답 도착: " + data));
JavaScript:
fetch(url).then(response => console.log("응답:", response));
→ 이 data -> {...} 또는 response => {...} 부분이 바로 콜백 함수이다.
핵심 요약
- 동기: 요청한 작업이 끝날 때까지 기다린 후 다음 일 수행
- 비동기: 요청한 작업을 시킨 후 기다리지 않고 다른 일을 먼저 수행, 결과는 나중에 받음
'SW Engineering' 카테고리의 다른 글
[SW Engineering] 페이지네이션 성능 측정 최적화(Offset vs Cursor Pagination 성능 비교 (평균 17배 개선)) (0) | 2025.09.08 |
---|---|
[SW Engineering] 비동기 통신 직접 만들면서 익히기 (0) | 2025.07.21 |
다양한 JSON 구조와 Java Class 매핑 하기 (0) | 2025.03.30 |
JSON 개념과 구조 쉽게 파악하기 (0) | 2025.03.30 |
Serialization, Stream, Buffer 개념 정리 (0) | 2025.03.29 |
Comments