[TIL] 멀티 스레드 / 멀티 프로세스의 이해

hyo_·2021년 1월 18일
0

JAVA 

목록 보기
9/20

※ 본 글은 아래 도서를 공부한 후 정리한 내용입니다.

📚 스프링 입문을 위한 자바 객체지향의 원리와 이해


T 메모리 -> TIL : 다시 보는 main() 메서드: 메서드 스택 프레임 참고

멀티스레드 (Multi Thread)

  • 멀티 스레드의 T메모리 모델 ( 스택 영역을 스레드 개수만큼 분할하여 사용 )
  1. 하나의 T 메모리만 사용한다.

  2. 스택 영역만 분할 하여 사용한다.

  3. 하나의 T 메모리의 스택 영역을 분할하여 사용하기 때문에 메모리 사용이 적다.

  4. 스태틱 영역과 힙 영역은 공유한다.


멀티프로세스 (Multi Process)

  • 멀티 프로세스는 다수의 T 메모리 사용 ( 멀티 프로세스는 다수의 데이터 저장 영역, 즉 다수의 T 메모리 구조 사용 )
  1. 각 프로세스마다 각자의 고유 공간을 가지고 있다.

  2. 서로 참조할 수 없다.

  3. 다수의 T 메모리를 사용하므로 메모리 사용량이 크다.

서블릿(Servlet)은 요청당 프로세스가 아닌 요청당 스레드를 생성 !!


멀티 스레드에서 전역 변수 사용의 문제점

  • 만약 두개의 스레드로 구성된 프로그램이 있다고 가정해보자.

① 스레드1이 공유 영역(스태틱과 힙)에 있는 전역 변수 A에 10을 할당

② CPU 사용권이 스레드2로 넘어감

③ 스레드2가 전역 변수 A에 20을 할당

④ CPU 사용권이 스레드1로 넘어가서 A값을 출력

😟 스레드1 입장에서 갑자기 20이라는 값이 출력되는 문제가 발생 ❕❕😟


정리

👉 TIL : 전역 변수와 메모리: 전역 변수 쓰지 말라니까요! 이 장에서 전역 변수를 쓰지 말라고 했었다. 쓰기 가능한 전역 변수 생성 시 스레드 안정성이 깨진다. 이를 보안하려면 락(lock)을 거는 방법이 있지만, 멀티 스레드의 장점이 감소한다.


🌞 Check it!! 🌞

  • 멀티 스레드는 하나의 T 메모리의 스택 영역만 분할하여 사용

  • 멀티 프로세스는 다수의 T 메모리 사용

  • 멀티 스레드 사용시 전역 변수를 사용할 경우 문제가 있을수 있음!

profile
🎓의지적인 삶을 살자!😊

0개의 댓글