Java

쓰레드

1space 2025. 6. 27. 08:42

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다.

프로세스와 쓰레드

프로세스(process)란?

  • 실행 중인 프로그램 하나를 의미합니다.
  • 메모리 공간, 자원(resources: 파일, 입출력 등), CPU 등과 함께
  • 최소 하나 이상의 쓰레드로 구성됨

정리: 프로세스 = 자원 + 쓰레드

쓰레드(thread)란?

  • 프로세스 안에서 실제 일을 수행하는 실행 단위
  • 프로세스 내부에서 작업을 수행하는 흐름
  • 하나의 프로세스에는 최소 1개 이상의 쓰레드가 존재함 (1개 이상 → “1+”라고 표시되어 있음)

비유

  • 프로세스 = 공장
  • 쓰레드 = 일꾼

 

싱글 쓰레드 vs 멀티 쓰레드

싱글 쓰레드 프로세스

  • 하나의 공장(프로세스)에 일꾼이 딱 한 명(쓰레드)
  • 구성: 자원 + 쓰레드

멀티 쓰레드 프로세스

  • 하나의 공장 안에 여러 명의 일꾼이 동시에 일하는 구조
  • 같은 공장 안에 3명 이상 일꾼이 들어 있음
  • "일꾼 n명", "멀티 쓰레드", "쓰레드 + 쓰레드 + …"

 

프로세스와 쓰레드 (3/3)

"새로운 프로세스를 생성하는 것보다 새로운 쓰레드를 생성하는 것이 더 저렴하다."

이유: 프로세스는 자원까지 포함하므로 비용이 큼, 반면 쓰레드는 자원 공유 구조이기 때문에 가볍다.

"2 프로세스 1 쓰레드"

  • 공장 2개, 각각에 일꾼 1명씩 있음 → 2개의 싱글 쓰레드 프로세스
  •  "싱글 쓰레드 프로세스 x2"
  • 비유: CGI 방식 (Common Gateway Interface)

"1 프로세스 2 쓰레드"

  • 공장 하나에 일꾼 두 명이 있음 → 멀티 쓰레드 프로세스
  • 필기: "멀티 쓰레드", "쓰레드 x2"
  • 비유: Java Servlet (서블릿은 멀티 쓰레드 기반)

✔ 효율: 쓰레드를 여러 개 쓰는 것이 메모리나 성능 면에서 유리
✔ 필기 강조: "멀티 쓰레드가 더 효율적", "1999년부터 서블릿 대중화"

 

멀티 쓰레드의 장단점

대부분의 프로그램은 멀티 쓰레드로 작성됨

  • 하지만 장점만 있는 건 아님 → 단점도 반드시 고려해야 함

장점

자원 효율 시스템 자원을 더 효율적으로 사용할 수 있음
사용자 응답성 UI 응답 속도(responsiveness) 향상
코드 분리 작업이 분리되므로 코드가 더 간결해짐
비유: 하나의 앱이 여러 작업을 동시에 처리하는 UI (예: 화면 렌더링 + 버튼 응답)

단점

동기화 문제 여러 쓰레드가 동시에 자원 접근 시 충돌 가능성 → synchronization 필요
교착 상태 deadlock: 서로 자원 기다리다 멈춤
실행 제어 쓰레드 간 우선순위 조절, 효율적 분산 실행이 어렵다

 

'Java' 카테고리의 다른 글

싱글 쓰레드와 멀티 쓰레드  (0) 2025.06.27
쓰레드의 구현과 실행  (0) 2025.06.27
메타 애너테이션  (0) 2025.06.26
표준 애너테이션  (0) 2025.06.26
애너테이션  (0) 2025.06.26