-
cpu를 할당받아서 코드를 실행시키는 주체는 Thread이다.
-
프로세스는 반드시 1개 이상의 Thread를 가진다.
- ex. java main method 실행 → jvm 실행(jvm = 하나의 어플리케이션 = 하나의 프로세스)
- 이러면 main thread가 생성되며 실행된다.
- 프로세스가 하나의 thread를 가진다는 개념이 일맥상통.
-
thread는 프로세스 내에서 필요한 stack만 할당받는다.
- code, data, heap은 쓰레드끼리 공유한다.(프로세스와 큰 차이점)
동시성의 문제
가 발생할 수 있다.
- 스레드 간의 메모리 stack영역에 접근 불가
- 메서드와 메서드 정보(지역변수, 매개변수) 등이 저장되므로 서로 공유 x
- 이러한 특성 덕분에 독립적인 함수 호출이 가능하다.