동기는 '직렬적'으로 작동하는 방식이고 비동기는 '병렬적'으로 작동하는 방식이다.
코드가 동시다발적으로 실행된다는게 아니라, ‘요청과 그에따른 결과가 동시에 일어난다’ 라는 뜻으로 동기
순차적으로 코드가 시작(앞에 있는 코드의 실행이 끝날 때 까지 뒤에 있는 코드는 실행되지 않음)
Ex) 아메리카노 다 만들어야 카푸치노를 주문받을 수 있다 (명령이 끝날 때까지 사용자에게 제어권을 돌려주지 않는 것이 동기)
동기적 실행
서브루틴 간에 명확한 실행 순서가 존재한다.
예를 들어 A,B,C 3가지 서브루틴이 존재한다면, A,B,C 순으로 실행되기를 기대한다면 반드시 A⇒B⇒C의 순서로 실행되어야 한다. B는 A가 실행 완료된 후 실행되고 C는 A와 B가 실행이 완료된 후 실행된다.
Thread1
이 작업을 시작 시키고, Task1
이 끝날때까지 기다렸다 Task2
를 시작한다.‘요청에 따른 결과가 그 자리에서 동시에 일어나지 않는다’ 라는 뜻의 비동기
코드가 순차적으로 실행되지 않고 코드가 동시적으로 시작 (병렬적), 특정 로직의 실행이 끝날 때 까지 기다려주지 않고 나머지 코드를 먼저 실행하는 것