10주차 과제: 멀티쓰레드 프로그래밍 · Issue #10 · whiteship/live-study
목표
자바의 멀티쓰레드 프로그래밍에 대해 학습하세요.
프로세스와 쓰레드
- 프로세스란 '실행 중인 프로그램'이다.
- 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)를 할당받아 프로세스가 된다.
- 프로그램을 수행하는데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있다.
- 프로세스 자원을 이용해서 실제로 작업을 수행하는 것이 쓰레드
- 모든 프로세스에는 최소 하나 이상의 쓰레드가 존재한다.
멀티 쓰레딩
- 둘 이상의 쓰레드를 가진 프로세스를 멀티쓰레드 프로세스라고 한다.
- 하나의 프로세스 내에서 여러 쓰레드가 동시에 작업을 수행하는 것이 가능하다.
- 실제로 한 개의 CPU가 한 번에 단 한가지 작업만 수행할 수 있기 때문에 아주 짧은 시간 동안 여러 작업을 번갈아 가며 수행함으로써 동시에 여러 작업이 수행되는 것처럼 보이게 하는 것이다. 그래서 프로세스의 성능이 쓰레드의 개수에 비례하지 않다.
- 하나의 쓰레드를 가진 프로세스보다 두 개의 쓰레드를 가진 프로세스가 오히려 더 낮은 성능을 보일 수도 있다.
- 장점
- CPU의 사용률 향상
- 자원을 보다 효율적으로 사용
- 사용자에 대한 응답성 향상
- 작업이 분리되어 코드가 간결해짐