[Thread (4주차 주제)]

핵심 키워드 🎯

먼저, 둘의 차이점을 말하기 전에 둘의 공통점은 프로그램을 만드는 과정에서 '비동기' 작업을 하기 위해서 사용한다는 점이다.

비동기 작업은 어떤 작업을 수행할 때, 이가 끝나는 것을 기다리지 않고 다른 작업을 수행하는 것이고

반대로 동기 작업은 해당 작업이 끝날 때까지 기다린 뒤 다음 작업을 수행하는 것이다.

그런데, 스레드와 코루틴은 근본적으로 큰 차이가 있다.

스레드의 경우 여러 개의 스레드를 사용해서 여러 개의 작업을 '병렬'로 수행하여 비동기적으로 작동한다.

하지만 코루틴의 경우 비동기 작업에 사용되긴 하지만 실제로는 병렬적으로 수행되는 것이 아니고

여러 개의 작업을 잘게 쪼개서 나눠서 작업을 수행하는 방식이다.

Untitled

스레드를 설명할 때 일꾼, 생산라인 등에 비유하는 경우가 있는데

위의 경우 스레드는 두 개의 작업을 두 일꾼이 동시에 처리하는 '병렬' 작업이 될 것이고