IT 지식
비동기(Asynchronous) vs 멀티스레딩(Multi-threading)
여행자0
2025. 2. 4. 22:14
📌 비동기(Asynchronous) vs 멀티스레딩(Multi-threading)
👉 비슷해 보이지만 다름!
👉 핵심 차이: 비동기는 "작업 처리 방식", 멀티스레딩은 "CPU의 스레드 개수"
🚀 개념 정리
✅ 비동기(Asynchronous)란?
- 하나의 스레드에서 실행되지만, 작업이 끝날 때까지 기다리지 않고 다음 작업을 수행
- "기다리지 않고 요청을 보내고 나중에 결과를 처리하는 방식"
- 예제: 자바스크립트의 fetch(), setTimeout(), Promise 등
📌 비동기 예제 (JavaScript)
console.log("1. 시작");
setTimeout(() => {
console.log("2. 3초 후 실행"); // 3초 후 실행 (비동기)
}, 3000);
console.log("3. 끝"); // 먼저 실행됨 (비동기)
✅ setTimeout()을 실행한 후 바로 다음 코드(console.log("3. 끝"))가 실행됨.
✅ 3초 후 "2. 3초 후 실행"이 출력됨.
✅ 멀티스레딩(Multi-threading)이란?
- CPU의 여러 개의 스레드를 사용하여 동시에 여러 작업을 실행하는 방식
- "여러 개의 작업을 동시에 수행할 수 있도록 CPU 자원을 활용하는 방식"
- 멀티코어 CPU에서 성능을 높이기 위해 사용됨
- 예제: Java의 Thread, Python의 threading 라이브러리 등
📌 멀티스레딩 예제 (Python)
import threading
import time
def task(name):
print(f"{name} 시작")
time.sleep(3)
print(f"{name} 완료")
# 두 개의 스레드 생성
thread1 = threading.Thread(target=task, args=("작업 1",))
thread2 = threading.Thread(target=task, args=("작업 2",))
# 스레드 실행
thread1.start()
thread2.start()
print("메인 스레드 실행 중...")
✅ thread1과 thread2가 동시에 실행되며, CPU의 여러 스레드를 사용하여 병렬 처리
✅ "메인 스레드 실행 중..."도 바로 출력됨
⚡ 비동기 vs 멀티스레딩 차이점
구분 | 비동기 (Asynchronous) | 멀티스레딩 (Multi-threading) |
작동 방식 | 요청 후 기다리지 않고 다음 작업 실행 | 여러 개의 스레드가 동시에 실행됨 |
스레드 개수 | 하나의 스레드에서 실행됨 | 여러 개의 스레드 사용 |
병렬 실행 여부 | 비동기지만 병렬 실행은 아님 | 병렬 실행 가능 (멀티코어 활용) |
주요 활용 | I/O 작업 (네트워크, 파일 읽기) | CPU를 많이 쓰는 작업 (연산, 데이터 처리) |
예제 | fetch(), async/await (JavaScript) | Thread (Java, Python) |
📌 언제 비동기 vs 멀티스레딩을 사용할까?
✅ 비동기(Asynchronous) 추천
- 네트워크 요청(API 호출)
- 파일 읽기/쓰기
- 데이터베이스 요청
- UI 이벤트 처리
✅ 멀티스레딩(Multi-threading) 추천
- 이미지/영상 처리
- 데이터 연산, AI 연산
- 멀티플레이 게임
- CPU 성능을 최대로 활용해야 할 때
🔥 결론
1️⃣ 비동기(Asynchronous) → 하나의 스레드에서 "기다리지 않고" 실행 (ex: fetch(), setTimeout())
2️⃣ 멀티스레딩(Multi-threading) → 여러 개의 스레드를 사용하여 병렬 실행 (ex: Thread, threading)
3️⃣ 비동기는 "대기 시간을 줄이는 방식", 멀티스레딩은 "여러 개의 작업을 동시에 실행하는 방식"
💡 즉, 비동기와 멀티스레딩은 개념이 다르지만, 둘 다 성능 최적화를 위한 방법이야! 🚀