반응형

쓰레드 (Thread)와 멀티 쓰레드(Multi Thread)

 

먼저 쓰레드의 기본 개념부터 알아보자. 

 

쓰레드 (Thread)

쓰레드는 어떤 프로그램 또는 프로세스 내에서 실행되는 흐름의 단위를 말한다. 

일반적으로 하나의 프로그램은 하나의 쓰레드를 가지고 있지만, 

프로그램 환경에 따라 두 개 이상의 쓰레드를 동시에 실행할 수 있다. 

두 개 이상의 쓰레드를 실행하는 방식을 멀티 쓰레드(Multi Thread) 라고 하는 것이다.

 

 

멀티 쓰레드 (Multi Thread)

우리가 Ctrl + Alt + Delete 를 누르면 뜨는 팝업창의 

작업관리자 탭을 보면 프로세스에 올라와 있는 

어플리케이션 하나를 하나의 프로세스라고 부른다. (ex. Chrome)

크롬을 실행하면 운영체제(OS)로부터 필요한 메모리를 할당받아 

어플리케이션의 코드를 실행하는 것이 프로세스인 것이다.

만약 크롬을 2개 띄웠다면 2개의 프로세스가 생성된 것이다. 

 

 

멀티 태스킹(Multi Tasking) 과 멀티 쓰레드(Multi Thread)

멀티 태스킹(Multi Tasking) 이란 2가지 이상의 작업을 동시에 처리하는 것을 말한다. 

엑셀 작업을 하는 동시에 음악을 듣는 것은

OS가 프로세스마다 작업을 병렬도 처리하기 때문에 가능하다. 

메신저 프로세스에서 채팅과 파일 업로드 기능을 동시에 수행할 수 있는 것은

하나의 프로세스 내에서 멀티 태스킹을 할 수 있도록 만들어진 프로세스인 것이다.

이렇게 하나의 프로세스에서 멀티 태스킹이 가능한 것은 멀티 쓰레드(Multi Thread) 덕분이다. 

멀티 프로세스는 프로세스마다 OS로부터 할당받은 고유의 메모리를 

서로 침범할 수 없지만 멀티 쓰레드는 /java/java-jvm/ 포트스에서 확인할 수 있는 것처럼 

프로세스 내부에서의 멀티 쓰레드는 공유되는 자원이 있어서 

하나의 쓰레드에서 예외가 발생한다면 프로세스 자체가 종료될 수 있다. 

멀티 쓰레드(Multi Thread) 는 하나의 프로세스를 여러 실행단위로 구분하여 

자원을 공유하고 자원의 생성 및 관리의 중복성을 최소화하여 

수행 능력을 향상시키는 것이다.

다시 말해서 하나의 프로그램에 동시에 여러 개의 일을

수행할 수 있도록 해주는 것이다.

 

 

메인 쓰레드 (Main Thread)

모든 Java 어플리케이션은 Main Thread 가 main() 메소드를 실행하면서 시작된다.

Main Thread 흐름 안에 싱글 쓰레드(Single Thread)가 아닌 멀티(Multi Thread) 쓰레드 어플리케이션은 

필요에 따라 작업 쓰레드를 만들어 병렬로 코드를 실행할 수 있다. 

싱글 쓰레드의 경우 메인 쓰레드(Main Thread)가 종료되면 프로세스도 같이 종료되지만, 

멀티 쓰레드메인 쓰레드가 종료되도 실행중인 쓰레드가

하나라도 있으면 프로세스가 종료되지 않는다. 

 

 

참고

https://honbabzone.com/java/java-thread/

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기