[JavaScript] 24. 동기와 비동기

서회정's avatar
Feb 03, 2026
[JavaScript] 24. 동기와 비동기

1. 동기

💡
여러 개의 작업이 있을 때 그 작업들을 순서대로 한 번에 하나 씩 처리하는 것을 말함
동기적으로 처리한다
notion image
 
notion image
 
💡
Thread
하나의 프로세스(Process) 내부에서 실행되는 최소 실행 단위 로, 같은 프로세스의 메모리(Heap, Code, Data)를 공유하면서 독립적인 실행 흐름(Stack, Program Counter)을 가진다.
여러 스레드는 병렬성(Parallelism) 또는 동시성(Concurrency)을 통해 작업을 효율적으로 처리한다.
한 마디로 프로그램 안에서 코드가 실제로 실행되는 하나의 작업 흐름이다.
약간 일꾼 개념이라 일꾼이 여러명이면 더 빠르게 일을 처리할 수 있는거임!
 
notion image
⇒ 하나의 작업에서 너무 오랜 시간이 소요되거나 처리되지 않는 경우에는 프로그램 전체 성능이 악화될 수 있다.
 
notion image
Java나 C# 언어에서는 이를 개선하기 위해 멀티스스레드 기법을 사용한다.
하지만 자바스크립트는 단일 스레드 언어이기 때문에 이를 보완할 수 있는 다른 방법을 사용해야한다.
 

2. 비동기

💡
단일스레드를 가진 자바스크립트 엔진 환경에서 사용하는 기법으로, 여러 개의 작업이 있을 때 이를 순서대로 처리하지 않는 방식을 의미한다.
우리가 부리는 일꾼은 한 명인데 얘가 편법을 써서 두 가지 일을 동시에 할 수 있는거임.
console.log(1); setTimeout(() => { console.log(2); }, 3000); console.log(3);
3000ms 이후 setTimeout 내장함수 내부에 있는 콜백함수가 실행됨!
notion image
 
자바스크립트 엔진은 단일 스레드를 가지고 있는데 이런 경우에는 어떻게 동시에 작업을 하는 걸까?
⇒ setTimeout 내장함수 등과 같은 비동기 작업은 자바스크립트 엔진이 아닌 Web APIs에서 실행되기 때문!
notion image
notion image
notion image
받았던 콜백함수를 자바스크립트 엔진에 다시 돌려줌 ⇒ 자바스크립트 엔진에서 콜백함수 실행!
⇒ 스레드가 하나여도 비동기적으로 여러 작업을 동시에 처리 가능!
 
Share article

clubnerdy