『스프링입문을 위한 자바 객체지향의 원리와 이해』로 공부한 내용을 정리한 글입니다.
멀티스레드(Multi-thread)
멀티스레드는 하나의 프로그램(=프로세스) 안에서 여러 개의 작업 흐름(스레드)이 동시에 실행되는 구조입니다.
- 특징: 스레드들은 하나의 프로그램이기 때문에 코드, static 변수, 힙 영역은 공유합니다.
- 다르게 사용하는 부분: 각 스레드는 스택 영역을 따로 가짐 → 각자 자신의 지역 변수나 메서드 호출 정보를 따로 저장함.
쉽게 말하면:
여러 사람이 한 집에서 함께 사는데, 거실/부엌/냉장고는 공유하고, 방은 따로 있음.
멀티프로세스(Multi-process)
멀티프로세스는 여러 개의 독립적인 프로그램(프로세스)이 동시에 실행되는 구조입니다.
- 특징: 각각의 프로세스가 자신만의 코드, static 변수, 힙, 스택 영역을 가짐 → 다른 프로세스와는 메모리를 전혀 공유하지 않음.
- 서로 간섭 없음: 하나의 프로세스에서 발생한 문제는 다른 프로세스에 영향을 주지 않음.
쉽게 말하면:
여러 사람이 각자 다른 집에 살고 있음. 냉장고도 따로, 방도 따로, 아무것도 공유하지 않음.
왜 이 차이가 중요할까?
- 멀티스레드는 메모리를 공유하므로 자원 접근이 빠르고 효율적이지만, 공유 변수 때문에 충돌이 발생할 수 있어 동기화(lock) 같은 제어 기법이 필요함.
- 멀티프로세스는 서로 간섭하지 않기 때문에 안정적이지만, 데이터를 주고받을 때 속도가 느리고 복잡함 (ex. IPC 사용 필요).
'Spring > 스프링입문을 위한 자바객체지향의 원리와 이해' 카테고리의 다른 글
객체지향 제대로 알기: 클래스는 분류, 객체는 실체 (0) | 2025.06.29 |
---|---|
객체 지향은 인간 지향이다 (0) | 2025.06.29 |
전역 변수(static)와 메모리: 왜 주의해서 써야 하는가? (0) | 2025.06.29 |
메서드 호출과 메모리 구조 (0) | 2025.06.29 |
스택 프레임과 지역 변수의 메모리 구조 (0) | 2025.06.29 |