일반적으로 동기와 비동기의 차이는 메소드를 실행시킴과 동시에 반환 값이 기대되는 경우를 동기라고 표현하고, 그렇지 않은 경우를 비동기라고 표현한다.
메소드를 실행시킴과 동시에 반환 값을 기대한다는 의미는 실행되었을 때 값이 반환되기 전까지 blocking되어 있는다는 의미이다.
이는 해야할 일로 비유할 수 있다. 만약 빨래, 설거지, 청소를 해야 한다면 동기는 빨래를 먼저 끝낸 뒤에 설거지를 하고, 그 뒤에 청소를 하게 된다.
메소드를 실행시킴과 동시에 반환 값을 기대하지 않는다는 것은 실행되었을 때 blocking이 되지 않고 이벤트 큐에 넣거나 백그라운드 스레드에게 해당 task를 넘기고 바로 다음 코드를 실행하기 때문에 기대되는 값이 바로 반환되지 않는다는 의미이다.
이 역시 해야할 일로 비유할 수 있는데 빨래, 설거지 청소를 해야 한다면 빨래는 빨래 업체에, 설거지는 설거지 업체에, 청소는 청소 업체에 맡긴 뒤에 다른 작업을 할 수 있다. 업체에 맡긴 일들은 완료되면 업체에서 연락이 오기 때문에 따로 기다릴 필요는 없다.