티스토리 뷰

개발/JAVA

[Java]Thread

시크시크시크 2017. 1. 10. 22:37

쓰레드에 앞서 혼동하기 쉬운 용어들

 

- Task

태스크는 우리가 쉽게 접할 수 있는 인터넷 익스프롤러나 워드 프로세서와 같은 큰 프로그램부터 계산기의 덧셈과 같이 작은 연산작업까지 포함하는 개념. 프로세스와 스레드까지 포괄한다.

- 프로세스

OS로부터 자원을 할당받아 동작하는 독립된 프로그램을 의미 단, 프로세스들은 서로 자원을 공유하지 못한다.

- 멀티 태스킹

여러개의 태스크 즉 일을 병렬 처리하는 것을 의미

- 병행처리

여러 작업이 순차적으로 처리되는 방식과 동시에 병렬로 처리되는 방식을 포괄하는 의미

 

Thread는 하나의 프로세스에서 실행하는 작업의 단위다.

예를 들어 비행기 시뮬레이션 게임을 실행하였다면 하나의 게임 프로세스에는 내가 조종하는 비행기 외에도 여러개의 비행기가 화면에 나타난다. 여러개의 비행기들은 각각 독립적으로 비행한다. 여기서 비행기들이 스레이드이다.

 

기본적으로 하나의 프로세스를 실행하면 하나의 스레드가 실행된다. 이스레드를 Main Thread라고 하며, 프로세스의 시작이 된다.

프로세스 내부에 하나의 스레드가 동작하는 것을 싱글 스레드 프로세스(Single-Thread Process)라고 한다. 반대로 프로세스 내부에 여러개의 스레드가 동작하는 것을 멀티 스레드 프로세스(Multi-Thread Process)라고 한다.

 

Thread를 생성하기 위해서는 Thread 클래스를 상속받는것과 Runable 인터페이스를 구현하는 두가지 방법이 있다.