스레드란?
- 프로세스 내에서 실행되는 흐름의 단위
- 프로세스는 스레드를 여러개 생성해 여러 작업을 동시에 처리할 수 있음 > 멀티 스레드
- 스레드들은 부모 프로세스의 자원을 공유 > 영향 O
- 같은 주소의 메모리에 접근 가능 > 데이터 공유 가능

프로세스란?
- 동적인 상태, 실행되고 있는 컴퓨터 프로그램, 운영체제에서 할당하는 작업의 단위
- 쉽게 생각하면 실행하는 프로그램 단위를 프로세스이다.
- 포토샵 프로그램, 엑셀 프로그램, 노드, 웹 브라우저 등
- 프로세스 간 메모리 등의 자원을 공유하지 않음

싱글 스레드
- 하나의 프로세스가 한 번에 하나의 일만 처리하는 것
- 동기화에 신경 쓸 필요가 없다.
멀티 스레드
- 하나의 응용 프로그램을 여러 개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하게 하는것
- 멀티 스레드가 적용된 웹 브라우저 프로그램에서는 하나의 스레드가 이미지 파일을 로드하고 있는 동안, 다른 스레드에서 사용자와 상호작용이 가능하다.
- 하나의 스레드에 문제가 생기면 전체 프로세스가 영향을 받기 때문에 주의 깊은 설계가 필요하다.
- 스레드 간의 자원 공유로 동시성 문제가 발생한다.
- 동시성 문제란, 여러 개의 스레드가 동시에 같은 데이터로 접근하는 경우 생기는 문제
- 동시에 접근하는 데이터를 누군가 수정하면 데이터의 신뢰성을 보장할 수 없어 동기화 작업이 필요하다.