[Java] 스레드(Thread)

juryang han·2022년 5월 27일
0

프로세스란

  • 프로세스는 실행중인 프로그램을 의미한다.
  • 프로세스는 완전히 독립적인 수행단위이다.

스레드란

  • 스레드는 프로그램 내에서 실행되는 프로그램 제어흐름(실행단위)을 말한다.
  • 한 프로그램에 여러 개의 스레드가 존재할수 있다.
    (스레드가 1개라면 단일스레드, 2개 이상이라면 다중스레드)
  • 프로그램 코드를 한 줄씩 실행하는 것이 스레드의 역할이다 (=실행제어)
  • 스레드란 곧 프로그램을 실행하는 주체이다.

멀티스레드란

  • 멀티스레드는 다중스레드이다.
  • 멀티스레드는 여러 개의 스레드를 이용하는 프로그램이다.
  • 다중 스레드에서 각각의 스레드는 하나의 독립적인 프로세스처럼 작업 수행

멀티 스레드로 구현된 프로그램을 실행하면

  • 하나의 프로세서는 한번에 1개의 스레드 밖에 실행시키지 못한다.
    대신 일정한 시간 간격으로 수행하는 스레드로 전화한다.
  • 스레드를 전활할 때 운영체제의 스케줄러의 기준으로 순서가 정해지게 된다.
  • 여러 스레드를 번갈아 처리하기 때문에 한가지를 처리하지만 동시에 작업하는 듯한 효과를 준다 -> 시분할 방식이라고 한다.

멀티 스레드 방식을 사용하는 이유

  • 프로세스는 독립적이다. 때문에 작업공간이 독립적이고, 프로세스끼리 자원 및 데이터를 공유하기 어렵다. 혹시 프로세스간 데이터 전송이 필요한 경우 시간, 자원 소요가 많다.
  • 스레드는 프로세스 처럼 작업을 동시에 처리할 수 있는 공통적인 특징이 있고, 프로세스보다 오버헤드가 적다는 것이 장점이다.

0개의 댓글