코딩 이야기/Java

[JAVA] 스레드(Thread) - 프로세스와 멀티 태스킹

dajoonee(다쥬니) 2020. 12. 9. 06:33
728x90
반응형

* 이 글은 2020. 3. 19. 15:53에 작성되었던 글입니다 *

 

 

**** 현재 공부중 ****

프로세스란?

Process

프로세스란, 운영체제에서 실행중인 하나의 애플리케이션을 말한다.

보통 우리는 컴퓨터 작업을 하게 되면 여러 일들을 하기 마련이다.

그러므로 여러 애플리케이션을 띄워놓고 작업을 하게 된다.

예를 들어..

인터넷 검색을 하면서 정보를 얻기 위해 검색한 페이지 그리고 검색 결과에서의 정보가 담긴 블로그 및 타 사이트 페이지,

듣기 위한 유튭 페이지 등 지금 적은것 까지만 해도 3 페이지가 된다. 3개의 인터넷 브라우저 프로세스가 돌아가고 있다는 말이다.

2개 이상의 프로세스가 돌아간다면 멀티 프로세스라고 한다.

이렇게 두 가지 이상의 작업을 동시에 처리하는 것멀티 태스킹이라고 한다.

그렇다면, 한 프로세스 내에서 동시 작업을 처리할 수 있을까?

여러 프로세스로 분리되어 작동하는 멀티 프로세스 개념이 아니라,

프로세스 내에서 여러 작업을 동시에 처리할 수 있는 것. 그것이 바로 멀티 스레드이다!

멀티 프로세스 : 애플리케이션 단위의 멀티 태스킹

멀티 스레드 : 애플리케이션 내부에서의 멀티 태스킹

멀티 스레드의 예로 미디어 플레이어가 있다.

미디어 플레이어는 하나의 프로세스이지만 내부에서는 동영상 재생과 동시에 음악 재생이 이루어진다.

바로 멀티 스레드 덕분에 가능한 일이다. 애플리케이션 내부에서 동시 작업이 가능하도록 해준것임 멀티 스레드가!!

프로세스와 스레드의 차이를 봐보면

프로세스는 독립적이기 때문에 ( 운영체제에서 할당받은 자신의 메모리를 가지고 실행한다.)

하나의 프로세스가 오류가 발생해도 다른 프로세스에는 영향을 미치지 않는다.

하지만 스레드는 다르다.

멀티스레드는 하나의 프로세스 내부에 생성되기 때문에 하나의 스레드에서 예외가 발생한다면?

해당 프로세스 자체가 종료가 될 수 있다.

때문에 예외 처리에 만전을 기해야 한다고 함.

멀티스레드의 사용

1. 대용량 데이터의 처리 시간을 줄이기 위해 데이터를 분할해서 병렬로 처리하는 곳에서 사용

2. UI를 가지고 있는 애플리케이션의 네트워크 통신을 위해 사용

3. 다수 클라이언트의 요청을 처리하는 서버를 개발할 때 사용

이처럼 멀티 스레드는 애플리케이션을 개발하는데 꼭 필요한 기능이다.

반응형