Java

Thread 의 동시성과 병렬성

RubyRabbit 2022. 9. 1. 21:43

프로세스와 쓰레드

프로세스

  • 메모리 상에 로딩된 프로그램

쓰레드

  • 프로세스 내에서 실행되는 작업 단위
  • 하나의 프로세스 내에서 여러 쓰레드가 동시에 실행될 수 있다.
  • 프로세스는 최소 하나 이상의 쓰레드로 실행되며 자바의 경우 실행 시점에 main 쓰레드를 생성하여 작업을 실행한다.

 

쓰레드의 동시성

쓰레드의 동시성은 동시에 실행되는 것이 아닌 동시에 실행되는 것처럼 보이게하는 현상이다.

  • 쓰레드를 실행하는 주체는 CPU 의 코어로서 코어의 수가 쓰레드의 수보다 작을 경우 코어는 쓰레드를 번갈아가면서 실행된다. 이 때, 번갈아가면서 실행되는 주기는 사람이 인지할 수 없을 정도로 매우 짧아 사용자는 마치 동시에 실행되는 것처럼 느낀다. 이를 쓰레드의 동시성이라고 한다.

 

쓰레드의 병렬성

  • CPU 의 코어 수가 쓰레드의 수 이상일 때 각각의 코어는 하나의 쓰레드를 담당하여 실행, 즉 병렬적으로 처리한다.