스레드는 한 프로세스 내에서 나뉘어진 하나 이상의 실행 단위이며, 프로세스에 할당된 메모리와 자원을 공유하며 작업을 수행합니다.
프로세스는 운영 체제로부터 CPU 시간과 같은 자원을 할당받는 더 큰 개념이며, 실제로 CPU에서 작업을 수행하는 것은 프로세스 내부의 스레드들입니다. 그래서 프로세스가 CPU 코어에서 실행되기 위해서는 최소한 하나의 스레드가 필요합니다.
💡 스레드마다 별도의 Stack을 할당하는 이유
스레드가 독립적인 함수 호출과 실행 흐름을 유지할 수 있게 하기 위함입니다. 이를 통해, 각 스레드는 다른 스레드의 작업에 영향을 받지 않고 독립적으로 실행될 수 있습니다.
기술면접에서 흔히 물어보는 스레드는 OS의 커널 레벨 스레드이고, 사용자가 쉽게 접할 수 있는 스레드는 유저 레벨 스레드인 자바 스레드 입니다.
자바 스레드는 JVM(Java Virtual Machine)을 통해 실행되며, JVM은 운영체제 상에서 하나의 프로세스로 작동합니다.
이 자바 스레드들은 OS 레벨의 스레드와 1:1로 매핑되어 실제로 실행되며, 이러한 매핑 덕분에 OS 레벨의 스레드를 간편하게 사용할 수 있습니다.
ref.
https://easy-code-yo.tistory.com/36
https://easy-code-yo.tistory.com/28