Java

Java_멀티 스레드와 멀티 프로세스의 차이

ssmm95 2024. 10. 17. 09:57
*스레드(thread): 다중 작업 환경에서 운영 체제가 여러 프로그램을 병행하여 처리할 때 효율적인 처리를 위하여 분할한 처리 단위.

 

Java에서의 멀티 스레드 : 한 프로그램이 여러 작업(스레드)을 동시에 처리할 수 있도록 도와주는 기능 (병렬처리)

멀티스레드에서 스레드 : 프로그램 안에서 독립적으로 실행되는 작은 작업 단위 

> 스레드들이 각자 독립적으로 움직이기때문에 하나의 프로그램이 마치 여러 프로그램처럼 동시에 여러 일을 처리할 수 있음 

 

* 멀티 프로세스 (Multi-process)

: 프로세스는 프로그램이 실행되는 독립된 단위

예) 컴퓨터에서 브라우저와 메신저 프로그램을 동시에 실행할 때 각각의 프로그램이 독립된 프로세스를 실행

 

멀티프로세스는 여러개의 프로세스를 동시에 실행하는 것이다 

각각의 프로세스는 독립된 메모리 공간을 가지고 있어서 하나의 프로세스가 오류 나더라도 다른 프로세스에 영향을 주지않는다 

 

자바의 멀티스레드는 여러 스레드가 하나의 메모리 공간을 공유한다, 때문에 같은 변수를 여러 스레드가 동시 접근하거나 수정할 수 있어서 멀테스레드가 멀티프로세스보다 더 가볍고 빠르게 동작한다 

 

> 멀티프로세스들은 서로 독립적인 메모리 공간을 가지고 있어서 하나의 프로세스에서 오류가 발생해도 다른 프로세스에 영향을 주지 않는다

> 멀티스레드는 내부에서 하나의 메모리 공간을 공유하기 때문에 하나의 스레드가 에외를 발생시키면 프로세스가 종료되므로 다른 스레드에도 영향을 준다

 

구분 멀티스레드 (Multi-thread) 멀티프로세스 (Multi-process)
정의 하나의 프로세스 내에서 여러 스레드를 생성하여 동시에 작업 수행 여러 개의 독립적인 프로세스를 생성하여 각각의 작업을 병렬로 수행
메모리 공유 하나의 프로세스 내에서 메모리와 자원을 공유 (가벼움) 각각의 프로세스가 독립된 메모리 공간을 사용 (무거움)
속도 메모리를 공유하므로 스레드 간의 통신이 빠르고, 실행 속도가 빠름 프로세스 간의 통신이 상대적으로 느리고, 생성과 관리에 시간이 소요됨
안정성 하나의 스레드가 오류 발생 시, 다른 스레드와 프로세스 전체에 영향을 미칠 수 있음 한 프로세스가 오류 발생 시, 다른 프로세스에는 영향을 주지 않음
사용 자원 메모리 사용량이 적고, 더 가볍게 여러 작업을 처리할 수 있음 각각의 프로세스가 독립된 메모리 공간을 가지므로 메모리 사용량이 큼
장점 - 메모리와 자원 공유로 통신 속도가 빠름
- 가볍고 효율적인 자원 사용
- 프로세스 간의 독립성으로 안정적
- 오류가 발생해도 다른 프로세스에 영향 없음
단점 - 자원을 공유하므로 동기화 문제 발생 가능
- 하나의 스레드가 오류 시 전체 프로세스에 영향
- 메모리 사용량이 많고, 무겁게 동작
- 프로세스 간의 통신 속도가 느림

 

'Java' 카테고리의 다른 글

Java_스레드 이름  (0) 2024.10.17
Java_메인 스레드  (1) 2024.10.17
Java_제네릭(Generics)  (0) 2024.10.16
Java_어노테이션(Annotation)  (0) 2024.10.16
Java_리플렉션  (0) 2024.10.16