Thread

Dohyeon Kong·2024년 4월 6일
0

Java☕

목록 보기
10/12
post-thumbnail

멀티태스킹(Multitasking)

멀티(Multi) + 태스킹(tasking)의 합성어로서, 다수의 작업을 동시에 처리하는 것

  • 하나의 프로그램이 하나의 작업(태스크)만 하는 경우가 대부분이지만, 하나의 프로그램이 여러 작업(태스크)를 동시에 실행하는 경우가 많다.

스레드(Thread)

스레드(Thread)

  • 운영 체제에 의해 관리되는 하나의 작업 혹은 테스크(task)
  • 다수의 스레드를 동시에 실행시키도록 응용프로그램을 작성하는 기법 => 멀티스레딩

스레드의 구성요소

  • 스레드 코드 : 작업을 실해하기 위해 사용자가 작성한 프로그램 코드
  • 스레드 정보 : 스레드 명, 스레드 ID, 스레드 소요시간, 스레드 우선순위 등 운영체제가 관리하는 정보

멀티태스킹(Multitasking)과 운영체제(OS)

운영체제(OS)와 스레드와의 관계

  • 프로그램 코드를 스레드로 관리하고 작동시키는 것은 운영체제가 담당한다.
  • 개발자는 작성한 코드를 하나의 스레드로 만들어 줄 것을 운영체제에게 요청해야 한다.

멀티태스킹(Multitasking)의 종류

  • 멀티프로세싱(Multi-Processing)
  • 멀티스레딩(Multi-threading)

멀티프로세싱(Multi-Processing)

하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 기법

  • 각 프로세스는 고유한 메모리 영역을 보유하고 독립적을 실행된다.

멀티프로세싱(Multi-Processiong)의 단점

  • 하나의 응용프로그램에 속하는 프로세스들 사이의 변수를 공유할 수 없기 때문에
    프로세스들 사이에 사용하는 통신 기법(IPC, Inter Process Communication)이 어렵고 오버헤드가 크다.
  • 프로세스 사이의 문맥 교환(Context switch)에 따른 과도한 작업량과 시간 소모의 문제점이 있다.

멀티스레딩(Multi-threading)

하나의 응용프로그램을 여러 개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 기법

멀티스레딩(Multi-threading)의 장점

  • 모든 스레드가 응용프로그램 내 자원과 메모리를 공유하므로 통신에 따른 오버헤드가 비교적 크지 않고, 스레드 사이의 문맥 교환 시 작업량이 작아 문맥 교환이 빠른 장점을 지닌다.
  • 응용프로그램이 다수의 스레드를 가지고 다수의 작업이나 요청을 동시에 처리함으로써, 여러 작업을 순차적으로 진행하는 경우 시간 지연과 자원의 비효율적 사용을 개선한다.

참조📜

  • 명품 JAVA ESSENTIAL - 황기태 지음-
profile
천천히, 꾸준히, 그리고 끝까지

0개의 댓글