본문 바로가기
개발 관련 지식/JAVA

멀티 스레드 개념

by 권태일1147 2020. 4. 4.

운영체제에서는 실행 중인 하나의 애플리케이션을 프로세스라고 한다. 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하면 프로세스라고 불린다. 하나의 애플리케이션이 여러 프로세스를 만들기도 한다. 예를 들면 크롬이라는 애플리케이션을 두 개 실행했다면 두개의 크롬 프로세스가 생성된 것이다.

 

멀티 태스킹은 두 가지 이상의 작업을 동시에 처리하는 것을 말한다. 운영체제는 멀티 태스킹을 할 수 있도록 CPU 및 메모리 자원을 프로세스마다 적절히 할당해주고, 병렬로 실행시킨다. 

 

멀티 태스킹이 반드시 멀티 프로세스를 뜻하는 것은 아니다. 한 프로세스 내에서 멀티 태스킹을 할 수 있도록 만들어진 애플리케이션도 있다. 예를 들면 미디어 플레이어는 동영상 재생과 소리 재생 두 작업을 동시에 하고, 메신저는 채팅을 하면서 파일 전송 기능을 수행하기도 한다. 이렇게 하나의 프로세스에서 두 가지 이상의 작업을 처리하는 데는 멀티 스레드가 사용되는 것이다.

 

하나의 스레드는 하나의 코드 실행 흐름이다. 고로 한 프로세스 내에 스레드가 두 개라면 두 개의 코드 실행 흐름이 생긴다는 것이다. 멀티 프로세스가 애플리케이션 단위의 멀티 태스킹이라면, 멀티 스레드는 애플리케이션 내부에서의 멀티 태스킹이라고 볼 수 있다. 

 

멀티 스레드는 하나의 프로세스 내부에 생성되기 때문에 하나의 스레드가 예외를 발생시키면 프로세스 자체가 종료될 수 있다. 그렇기 때문에 멀티 스레드에서는 예외 처리에 신경써야 한다.

 

메인 스레드

모든 자바 애플리케이션은 메인 스레드가 main() 메소드를 실행하면서 시작된다. 메인 스레드는 main() 메소드의 첫 코드부터 아래로 순차적으로 실행하고, main() 메소드의 마지막 코드를 실행하거나 return 문을 만나면 실행이 종료된다.

메인 스레드는 필요에 따라 작업 스레드들을 만들어서 병렬로 코드를 실행할 수 있다.

멀티 스레드에서는 실행 중인 스레드가 하나라도 있다면, 프로세스는 종료되지 않는다.

'개발 관련 지식 > JAVA' 카테고리의 다른 글

제네릭 메소드  (0) 2020.04.06
제네릭  (0) 2020.04.06
예외 처리  (0) 2020.04.03
인터페이스에서 디폴트 메소드  (0) 2020.04.02
인터페이스 상속  (0) 2020.04.02