멀티 스레드

선형채·2024년 3월 28일

멀티 스레드란 ?

  • 하나의 프로세스에서 여러 개의 스레드를 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것.

  • 웹 서버는 대표적인 멀티 스레드 응용 프로그램이다.

장점

  • 시스템 자원 소모 감소 (자원의 효율성 증대)

  • 시스템 처리량 증가 (처리 비용 감소)

  • 간단한 통신 방법으로 인한 프로그램 응답 시간 단축(스레드는 프로세스 내의 stack 영역을 제외한 모든 메모리를 공유하기 때문에 통신의 부담이 적다.)

단점

  • 단일 프로세스 시스템의 경우 효과가 미미하다.
  • 디버깅이 까다롭다.
  • 다른 프로세스에서 스레드를 제어할 수 없다.(프로세스 밖에서 스레드 각각을 제어할 수 없다.)
  • 멀티 스레드의 경우 자원 공유의 문제가 발생한다.(동기화 문제)

멀티 프로세스 대신 멀티 스레드 사용하는 이유

  • 쉽게 설명하면, 프로그램을 여러 개 키는 것보다 하나의 프로그램 안에서 여러 작업을 해결하는 것이다.

여러 프로세스(멀티 프로세스)로 할 수 있는 작업들을 하나의 프로세스에서 여러 스레드로 나눠가면서 하는 이유?

  • 자원의 효율성 증대
    스레드는 프로세스 내의 메모리를 공유하기 때문에 독립적인 프로세스와 달리 스레드 간 데이터를 주고 받는 것이 간단해지고 시스템 자원 소모가 줄어들게 된다
  • Context Switching시 스레드는 Stack 영역만 처리하기 때문

주의 할점 !
동기화 문제

profile
JAVA BACK-END DEVELOPER 👩‍💻

0개의 댓글