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️⃣ 비동기는 "대기 시간을 줄이는 방식", 멀티스레딩은 "여러 개의 작업을 동시에 실행하는 방식"

💡 즉, 비동기와 멀티스레딩은 개념이 다르지만, 둘 다 성능 최적화를 위한 방법이야! 🚀