[JAVA] 프로세스와 스레드의 차이

프로세스

  • 컴퓨터에서 실행되고 있는 프로그램을 말하며 CPU 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰입니다.
  • 코드, 데이터, 스택, 힙 메모리 영역을 기반으로 작업을 합니다.
  • 다른 프로세스와 독립적인 메모리 공간을 가지고 있습니다. 그래서 하나의 프로세스의 오류가 다른 프로세스에 영향을 미치지 않습니다.

스레드

  • 프로세스 내에서 실행되는 흐름의 단위를 말합니다.
  • 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 스레드들은 프로세스 내의 주소 공간과 자원을 공유합니다.
  • 스레드 간의 통신이 간단하고 빠르며, 프로세스 간 전환 비용보다 스레드 간 전환 비용이 적습니다.
  • 프로세스 내에서 동작하기 때문에 하나의 스레드의 오류가 다른 스레드에도 영향을 미칠 수 있습니다.
  • 동시에 여러 스레드가 공유 자원을 사용하면 동기화 문제가 발생할 수 있습니다.