[Java] 자바 멀티 태스킹 - 개요 및 JVM 기본 스레드와 스레드 그룹들
멀티 태스킹 : 개요 및 JVM 기본 스레드와 스레드 그룹들
- CPU 한 개로 여러 프로그램을 동시에(?), 병행으로 실행하는 방법
- 멀티 태스킹을 수행하는 방법
1) 멀티 프로세싱
- 프로세스(실행 중안 프로그램)를 복제하여 실행하는 방법
- 원본 프로세스의 모든 메모리를 그대로 복제한다.
- 특징
1) 메모리 낭비가 심하다.
2) 구현하기가 쉽다.
3) 프로세스끼리 독립적이기 때문에 원본 프로세스의 영향을 받지 않는다.
2) 멀티 스레딩
- 메인 프로세스의 작업 중 "일부 작업만 독립해서 실행(스레드)"시키는 방법
- 메인 프로세스의 힙 메모리는 공유하고 스택 메모리만 별도로 윶한다.
- 특징
1) 메모리 낭비를 줄인다.
2) 프로세스 복제 방식 보다는 구현하기가 조금 복잡하다.
3) 스레드들은 원본 프로세스에 종속되기 때문에 원본 프로세스가 종료되면
스레드들도 자동으로 종료한다.
- 현재 대부분의 멀티 태스킹은 "멀티 스레드" 방식으로 처리한다.
스레드와 스레드 그룹
- 스레드 : 프로세스의 작업 중에서 독립적으로 실행하는 작업.
- 스레드 그룹 : 스레드들을 묶어 놓은 것
JVM이 기본으로 생성하는 스레드와 스레드 그룹
` OS와 Java 버전에 따라 다를 수 있다.
` 스레드 구조
- TG("system")
--> TG("main")
-->T(''main")
--> T("Reference Handler") : 인스턴스의 주소를 관리
--> T("Finalizer") : 인스턴스의 메모리 해제를 관리
--> T("Signal Dispatcher") : OS로부터 들어오는 인터럽트 신호를 감지
--> T("Attach Listener")
'Programming > java' 카테고리의 다른 글
[Java] 멀티태스킹 - Thread (스레드)의 우선 순위 (0) | 2017.05.24 |
---|---|
[Java] 소켓(socket) 프로그래밍 - 서버(server)와 클라이언트(client) 소켓 만드는 법 (2) | 2017.05.23 |
[Java] 프로그램 아규먼트 program argument (args) 종류 (0) | 2017.05.23 |
[Java] 데이터 프로세싱 스트림 클래스 (data processing stream) 클래스 - bufferedInputStream (0) | 2017.05.22 |
[Java] 파일 입출력 Binary File I/O - 바이너리 스트림 클래스 (0) | 2017.05.19 |