프로세스와 쓰레드
프로세스란, 간단히 말하면 실행 중인 프로그램을 말합니다.
프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 됩니다.
프로세스는 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어
있으며, 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 쓰레드입니다.
그래서 모든 프로세스에는 최소한 하나 이상의 쓰레드가 존재하며, 둘 이상의 쓰레드를 가진 프로세스를
멀티쓰레드 프로세스라고 합니다.
프로세스 구성
싱글쓰레드 프로세스 = 자원 + thread
멀티쓰레드 프로세스 = 자원 + thread + thread + ...
※ 하나의 프로세스가 가질 수 있는 쓰레드의 수는 제한되어 있지 않으나 쓰레드가 작업을 수행하는데
개별적인 메모리공간을 필요하기 때문에 프로세스의 메모리는 한계에 따라 생성할 수 있는
쓰레드의 수가 결정됩니다.
우리가 사용하고 있는 윈도우나 유닉스를 포함한 대부분의 OS는 멀티태스킹을 지원하기 때문에
여러 개의 프로세스가 동시에 실행될 수 있습니다.
멀티쓰레드의 장점
- CPU의 사용률을 향상시킵니다.
- 자원을 보다 효율적으로 사용할 수 있습니다.
- 사용자에 대한 응답성이 향상됩니다.
- 작업이 분리되어 코드가 간결해집니다.
멀티쓰레드 단점
- 여러 쓰레드가 같은 프로세스 내에서 자원을 공유하면서 작업을 하기 때문에
동기화, 교착상태 문제가 발생합니다.
[출처] [java] 프로세스와 쓰레드|작성자 Simpolor
'JAVA > JAVA 스레드' 카테고리의 다른 글
[java] 쓰레드의 우선순위 (0) | 2017.11.01 |
---|---|
[java] 싱글쓰레드와 멀티쓰레드 (0) | 2017.11.01 |
[java] start()와 run() (0) | 2017.11.01 |
[java] 쓰레드 구현 및 실행 (0) | 2017.11.01 |
Executor,ExecutorService,ThreadPoolExecutor (0) | 2016.03.09 |
스레드풀(CompletionService)을 이용하여 작업실행하기 (0) | 2016.03.09 |
자바 쓰레드 동기화 (syncronized 키워드 사용하기) (0) | 2016.03.09 |
JAVA Thread 사용하기 (0) | 2016.03.09 |