본문으로 바로가기

Thread란?

category Java언어 2018. 8. 16. 13:35

프로세스

우리가 Java언어(프로그래밍 언어)로 소스파일(소스코드)를 작성하여 JDK에서 제공하는 컴파일러를 이용해 컴파일을 실행하면

class라는 확장자를 가진 파일이 하나 생성된다.

생성된 파일은 실행하기 전에는 하드디스크에 저장되어 있을뿐, 아무런 기능을 하지 않는다.

파일을실행하면 운영체제에서는 주기억장치(RAM)에 프로그램이 필요한 만큼의 메모리를 할당해 주며

프로그램은 할당된 메모리 내에서 애플리케이션의 코드를 실행한다. 이렇게 주기억장치에 메모리가 할당된 프로그램을 프로세스라고 한다.

(프로그램==애플리케이션)

 

멀티 태스킹

운영체제는 멀티 태스킹(동시작업)을 위해 멀티 프로세스를 지원한다. 즉, 동시에 여러 애플리케이션을 동시에 실행이 가능한 것이다.

우리가 인터넷검색을 하며 메신져를 하고, 게임을 할 수 있는 것도 이러한 이유에서 라고 할 수 있다.

그런데 멜론 플레이어와 같은 음악 플레이어에서 우리는 음악을 들으며, 신곡을 검색하고 내 음악 목록에 새로운 음악을 추가하는 등 여러 작업을 동시에 한다. 이렇게 한 프로세스 내에서도 멀티 태스킹이 이루어 지고 있는데, 어떻게 하나의 프로세스 안에서 여러가지 작업을 처리할 수 있는 것일까? 그 비밀은 멀티 스레드에 있다. (스레드는 프로세스안의 프로세스라고 할 수 있다.)

 

스레드

멀티 태스킹은 여러 프로그램 코드가 동시에 실행되는 것을 말한다.

여기서 프로그램 코드는 멀티프로세스와 멀티스레드에서 조금 다른 의미로 사용된다.

운영체제가 제공하는 멀티프로세스에서의 프로그램 코드는 하나의 애플리케이션의 코드를,  JVM이 제공하는 멀티스레드에서의 프로그램 코드는 하나의 애플리케이션이 가지고있는 각각의 기능이 가진 코드들을 의미한다. 즉, 멀티 프로세스가 애플리케이션 단위의 멀티 태스킹이라면 멀티 스레드는 애플리케이션 내부에서의 멀티 태스킹이라고 볼 수 있다.

 

1. 스레드는 코드의 실행단위

2. 하나의 스레드는 하나의 코드(작업)밖에 실행할 수 없다.

3. 모든 스레드는 애플리케이션 내의 자원과 메모리를 공유한다.

4. 멀티스레드는 하나의 응용프로그램(애플리케이션)을 동시처리가 가능한 여러 작업(코드)으로 분할하고

    작업의 개수만큼 스레드를 생성하여 각 스레드로 하여금 하나의 작업을 처리하도록 하는 기법.

5. 멀티프로세스와 달리 하나의 프로세스 내부에 생성되기 때문에 하나의 스레드가 예의를 발생시키면

    프로세스 자체가 종료될 수 있어 예외처리가 중요하다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Java언어' 카테고리의 다른 글

Thread Life Cycle (생명 주기)  (0) 2018.08.16
Thread 생성방법  (0) 2018.08.16
OOP 란?  (0) 2018.08.16
Wrapper클래스 활용  (0) 2018.07.10
class의 구성  (0) 2018.07.10