#CS
프로세스와 스레드의 차이점 정리
@2026-02-12·2 min read
프로세스란?
프로세스는 실행 중인 프로그램으로, 독립된 메모리 공간(Code, Data, Stack, Heap)을 가집니다.
스레드란?
스레드는 프로세스 내에서 실행되는 흐름의 단위로, Stack만 독립적으로 가지고 나머지 메모리 공간은 공유합니다.
프로세스 vs 스레드
| 구분 | 프로세스 | 스레드 |
|---|---|---|
| 메모리 | 독립적 | 공유 (Stack만 독립) |
| 통신 | IPC 필요 | 공유 메모리로 가능 |
| 생성 비용 | 높음 | 낮음 |
| 안정성 | 높음 (격리) | 낮음 (하나 죽으면 전체 위험) |
컨텍스트 스위칭
- 프로세스 컨텍스트 스위칭: 메모리 주소 공간 전환 필요 → 비용 큼
- 스레드 컨텍스트 스위칭: Stack만 전환 → 비용 적음
Java에서의 스레드
JAVA
// Thread 상속
class MyThread extends Thread {
@Override
public void run() {
System.out.println("Thread running");
}
}
// Runnable 구현
Runnable task = () -> System.out.println("Task running");
new Thread(task).start();정리
프로세스와 스레드의 차이를 이해하면 동시성 프로그래밍의 기초를 다질 수 있습니다.