동기는 '직렬적'으로 작동하는 방식이고 비동기는 '병렬적'으로 작동하는 방식이다.

1. 동기 (synchronous, 동시에 일어나는)


코드가 동시다발적으로 실행된다는게 아니라, ‘요청과 그에따른 결과가 동시에 일어난다’ 라는 뜻으로 동기

순차적으로 코드가 시작(앞에 있는 코드의 실행이 끝날 때 까지 뒤에 있는 코드는 실행되지 않음)

Ex) 아메리카노 다 만들어야 카푸치노를 주문받을 수 있다 (명령이 끝날 때까지 사용자에게 제어권을 돌려주지 않는 것이 동기)

동기적 실행

서브루틴 간에 명확한 실행 순서가 존재한다.

예를 들어 A,B,C 3가지 서브루틴이 존재한다면, A,B,C 순으로 실행되기를 기대한다면 반드시 A⇒B⇒C의 순서로 실행되어야 한다. B는 A가 실행 완료된 후 실행되고 C는 A와 B가 실행이 완료된 후 실행된다.

스크린샷 2022-09-01 오후 2.49.11.png

2. 비동기 (Asynchronous, 동시에 일어나지 않는)


‘요청에 따른 결과가 그 자리에서 동시에 일어나지 않는다’ 라는 뜻의 비동기

코드가 순차적으로 실행되지 않고 코드가 동시적으로 시작 (병렬적), 특정 로직의 실행이 끝날 때 까지 기다려주지 않고 나머지 코드를 먼저 실행하는 것