하나의 프로세스에서 하나의 스레드로(메인 스레드)만 작업을 처리하는 것
스레드가 하나이기 때문에 A, B 작업이 있으면 A를 먼저 끝낸 후에 B를 수행할 수 있다 (순차 수행)
하나의 스레드만 존재하므로 스레드끼리 자원 접근에 대한 동기화를 신경 쓰지 않아도 된다는 장점이 있다
작업 시간이 오래 걸리는 작업을 하는 경우 이 작업이 완료되어야 다음 작업을 수행할 수 있기 때문에 사용자 입장에서는 렉 걸린 것처럼 기다려야 하는 단점이 있다 (자원의 낭비가 심해짐)
대표적으로 JavaScript가 Single Threaded Language라서 멀티스레딩을 못하지만 JavaScript가 동작하고 있는 브라우저 안의 Web APIS를 이용하게 되면 멀티스레딩이 가능하다 (ex setTimeout, setInterval, fetch, eventListener 등)
🥰프로세스, 스레드에 대한 자세한 설명은 제 벨로그에 있습니다🥰
🥰setTimeout, setInterval, eventListener에 대한 자세한 설명은 제 벨로그에 있습니다🥰
하나의 프로세스 안에서 여러개의 스레드가 동시다발적으로 일어나는 것
여러개의 스레드로 각각 하나의 작업을 처리하도록 할 수 있다 (병렬 수행)
멀티 스레드의 장점
- 시스템 자원 소모 감소 (자원의 효율성 증대)
- 시스템 처리량 증가
- 스레드는 프로세스 내의 Stack 영역을 제외한 code, heap, data 영역을 공유하기 때문에 프로그램 응답 시간 단축 가능 (Stack 영역은 스레드별로 고유하게 할당받음)
멀티 스레드의 단점
- 하나의 스레드에 문제가 발생하면 전체 프로세스가 영향을 받는다
- 자원 공유의 문제가 발생할 수 있다 (code, data, heap 영역을 공유함로 스레드끼리 서로 접근하여 데이터를 수정하는 등 문제 발생 할 수 있다)
😍 코드 지적은 언제나 환영입니다. 읽어주셔서 감사합니다. 😍