////
Search
Duplicate

스레드와 멀티스레딩 - 지명

스레드

프로세스 내에서 실행되는 흐름의 단위.
각 스레드는 프로세스의 자원을 공유하면서 독립적인 실행 흐름을 가진다.
모든 프로세스는 최소 하나 이상의 스레드가 존재한다.
프로세스와의 차이점
프로세스 : 운영체제로부터 자원을 할당받는 작업의 단위
스레드 : 프로세스 내에서 실행되는 더 작은 단위
장점
스레드는 자원을 공유하기 때문에 커뮤니케이션이 용이하다.
프로세스보다 생성과 전환 비용이 적다.
단점
자원을 공유하기 때문에 데이터의 일관성을 유지하기 위한 동기화가 필요하다.
따라서 복잡성이 증가할 수 있다.

멀티스레딩

하나의 프로세스 내에서 여러 스레드를 동시에 실행하는 기술
장점
여러 작업을 병렬로 처리함으로써 자원의 활용도가 높아진다.
동시성
단점
스레드 간의 동기화 문제와 데이터 공유로 인한 복잡성이 증가한다.
한 스레드에 문제가 생기면 다른 스레드에도 영향을 끼쳐 프로세스에 영향을 줄 수 있다.
동기화 기법
락(Lock), 세마포어(Semaphore), 모니터(Monitor) 등의 동기화 기법을 통해 스레드 간의 안전한 자원 공유와 동시성 문제를 해결할 수 있다.
락 (Lock)
동시에 여러 스레드가 같은 자원에 접근하는 것을 방지하기 위해 사용되는 동기화 메커니즘
한 스레드가 특정 자원을 사용하고 있을 때, 그 자원에 대한 락을 걸어 다른 스레드가 동시에 접근하지 못하도록 한다.
한 스레드가 자원을 사용하기 시작할 때 락을 획득하고, 작업이 끝나면 락을 해제한다. 락이 걸린 자원에 다른 스레드가 접근하려 하면 락이 해제될 때까지 대기하게 된다.
세마포어 (Semaphore)
락과 비슷하지만, 동시에 여러 스레드가 자원에 접근할 수 있도록 허용하는 정수 값으로 관리되는 동기화 메커니즘
세마포어의 값은 접근 가능한 최대 스레드 수를 의미한다.
스레드가 자원에 접근하려면 세마포어를 ‘감소’시키고, 작업이 끝나면 ‘증가’시킨다. 세마포어의 값이 0이면, 추가 스레드의 접근이 불가능하며 대기상태로 전환된다.
모니터 (Monitor)
락과 조건 변수를 이용하여 스레드 간의 동기화를 수행하는 동기화 메커니즘
모니터 내에서는 한 번에 하나의 스레드만이 작업을 수행할 수 있으며, 조건 변수를 사용해 특정 조건 하에 스레드를 대기시키거나 깨울 수 있다.
스레드가 모니터의 메서드를 호출하면, 자동으로 락을 획득하게 된다. 작업을 마친 후 락을 해제하며, 조건 변수를 통해 다른 스레드의 실행을 조정할 수 있다.
적용 사례
웹 서버
동시에 많은 요청을 처리할 수 있도록 멀티스레딩 활용
멀티미디어 처리
비디오 인코딩, 렌더링 등 멀티미디어 처리 작업은 멀티스레딩을 통해 성능을 크게 향상시킬 수 있음
게임 개발
게임의 물리 엔진, 그래픽 렌더링, 사용자 입력 처리 등을 동시에 수행하기 위해 멀티스레딩이 사용된다.
실시간 시스템
실시간 데이터 처리를 필요로 하는 시스템에서 멀티스레딩은 중요한 역할을 한다.

자바에서의 스레드 ?