728x90
자바는 멀티 쓰레드를 지원합니다.
간혹 저를 포함한 개발자분들에게 멀티 쓰레드와 멀티 프로세스의 차이를 묻는다면 알듯말듯한 느낌!! 간질간질한 느낌!! 을 느끼시는 개발자 분들도 있으실 거에요.
그래서 간략히 한번 정리해 봤습니다.
용어 정리부터 간략히 해볼게요.
- 멀티 쓰레드
- 프로그램 실행단위, 프로세스 내 주소공간 및 자원 공유 즉 여러 스레드를 동시에 실행시키는 응용프로그램을 작성하는 기법입니다.
- 하나의 프로그램에 동시에 여러가지 일을 수행할 수 있도록 해주는 것 정도로 이해하면 좋겠습니다.
- 멀티 프로세스
- 프로세스란 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말하는데요 (참고-위키백과 - 프로세스)
- 하나의 프로그램에서 여러개의 프로세스를 구성하여 각 프로세스가 하나의 작업(task)을 처리하도록 하는 것
- 차이점
- 멀티 스레드는 멀티 프로세스보다 메모리를 적게 사용할 수 있는 구조이다.
- 이 부분은 객체지향 프로그램의 메모리 사용 구조를 조금 이해하면 쉽게 이해하실 수 있어요.
메모리사용에 대해서는 추후 에 한번 간략히 정리해서 올려볼게요!
일단 메모리가 적게 사용 된다라고 이해 하세요!
- 이 부분은 객체지향 프로그램의 메모리 사용 구조를 조금 이해하면 쉽게 이해하실 수 있어요.
- 멀티 프로세스는 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 주지 않아 안정성이 높아요.
대신 멀티 스레드 보다 많은 메모리 공간과 CPU를 차지해요.
간략히 말하면 멀티스레드는 메모리 구조에 저장영역인 스택(Stack)영역만 쪼개서 사용하고 프로세스는 메모리 구조의 데이터 저장영역(스태틱, 스택, 힙)이 n개 만큼 늘어나는 구조여서 그래요. 추후에 간략히 정리해서 올릴게요! - 멀티프로세스는 서로의 영역에 침범을 못해요 즉 독립된 구조라 안정성이 높아요.(대신 많은 프로세스가 있다면 성능 저하가 일어나요)
- 멀티쓰레드는 메모리를 적게 사용할 수 있어 좋지만 같은 메모리공간(스택)을 공유하기때문에 서로의 공간을 침범할수 있어서 대단히 주의가 필요해요.
- 간략히 메모리 구조를 그려봤어요(데이터 저장 영역)
멀티쓰레드 구조 : 스택 영역은 분리되어있지만 스태틱, 힙 영역은 서로 공유를 해요 그래서 서로 참조를 할 수있어서 코드를 짤 때 주의를 요해요(실제로 저도 인지하고 코드를 짰는데 구동하니 개판이였어요ㅋㅋ)
참조를 대비할 수 있는 코딩 방식등은 나중에 포스팅하면서 같이 올려볼게요.
스태틱(Static)영역 스택(Stack)영역
스레드
스레드
스레드 힙(Heap)영역
이런식이라 서로의 데이터를 참조하지 못해서 안정성이 높아요.
프로세스 -
스태틱(Static)영역 스택(Stack)영역 힙(Heap)영역 스태틱(Static)영역 스택(Stack)영역 힙(Heap)영역 스태틱(Static)영역 스택(Stack)영역 힙(Heap)영역
ps.해당 메모리구조는 자바 프로그램이 구동되면서 메모리를 어떻게 사용하고있나 포스팅하면서 한번 같이 올려볼게요.
저도 수박 겉핥기 식으로 아는 수준이라:) 같이 공부해요~
- 멀티 스레드는 멀티 프로세스보다 메모리를 적게 사용할 수 있는 구조이다.
728x90
'공부 > 공부정리' 카테고리의 다른 글
객체지향 설계의 5원칙을 간략히 알아보자.(SOLID) (0) | 2021.08.25 |
---|---|
객체지향 언어의 4대 특성을 간략히 알아보자. (0) | 2021.08.25 |
자료구조 - Collection, List, Set, Map 등 요약 (0) | 2021.08.24 |
댓글