기술면접
멀티 쓰레딩
하루우울루
2025. 4. 24. 10:59
멀티쓰레딩은 여러 프로세스가 동시에 실행되는 멀티 태스킹과 달리 하나의 프로세스 내에서 여러 작업을 여러 쓰레드를 통해 동시에 실행할 수 있도록 하는 방식이다.
쓰레드는 프로세스 내에서 실행되는 작업의 최소 단위이고, 독립적으로 실행한다.
병렬 처리를 통해 여러 작업을 동시에 처리할 수 있어 성능을 향상시킬 수 있다.
같은 프로세스에서 쓰레드들이 메모리와 자원을 공유할 수 있다.
그래서 여러 쓰레드가 같은 공유 데이터에 접근하려 하면 충돌이 일어날 수 있다.
자원의 경쟁으로 프로그램이 교착상태에 들어갈 수 있어 주의해야 한다.
해결하기 위한 동기화 방법으로는
뮤텍스, 세마포어, 모니터 방법이 있다.
뮤텍스(Mutex) 한 번에 하나의 쓰레드만 접근을 허용하는 잠금 메커니즘이다.
세마포어(Semaphore) 제한된 수의 쓰레드 접근을 허용하는 신호 메커니즘이다.
모니터(Monitor) 공유 자원에 대한 접근을 관리하는 고수준 동기화 구조이다.
자바에서는 Thread클래스가 있고, Runnable 인터페이스가 있다.