[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")

블로그 이미지

필로그래머

,