-
Thread (쓰레드)CS 2020. 12. 1. 15:48
Thread ?
하나의 프로세스 내부에서 독립적으로 실행되는 하나의 작업 단위를 말하며,
세부적으로는 운영체제에 의해 관리되는 하나의 작업 혹은 태스크를 의미한다.
- JVM에 의해 하나의 프로세스가 발생하며, Java의 Main Method 역시 하나의 흐름으로 메인 쓰레드에 해당한다.
- 쓰레드를 이용하면 하나의 프로세스에서도 병렬적(동시적)으로 처리가 가능하다. 여러 개의 처리 루틴을 가질 수 있다.
- 단순하게 반복되는 코드를 실행할 때도 여러 개의 쓰레드를 만들어서 분리 시킨 뒤 결과 데이터를 받아 합치면 그만큼 시간을 절약할 수 있다.
- 특히 짧은 시간 내에 많은 사용자의 트래픽을 처리해야 하는 대용량 시스템이나 CPU 활용을 극대화 시켜 처리해야 하는 복잡한 연산에서 많이 사용한다.
- 다중 쓰레드 작업 시에는 각 쓰레드 끼리 정보를 주고 받을 수 있어 처리 과정의 오류를 줄일 수 있다.(프로세스는 불가능)
Thread 생성 방법 (Java)
1. class A / extends Thread /를 상속받아 run()을 Overriding 한다.
이 방법의 경우 객체 하나에 스레드 하나를 연결시킬 때 이렇게 사용한다.
2. class A / implements Runnable /를 이용해서 run()을 Overriding 한다.
다중상속 문제로 이 방법을 더 많이 사용한다고 한다.
Thread의 생명 주기
- New : Thread를 생성한 상태
- Runnable : Thread가 실행되기 위한 준비 상태 단계로 Cpu를 점유하고 있지 않으며, 대기하고 있는 상태로 start() 호출을 통해 run() method에 설정된 Thread가 Runnable 상태로 진입한다. (Ready 상태라고도 한다)
- Running : 스케줄러에 의해 선택된 Thread가 실행되는 단계로 Cpu를 점유하여 실행하고 있다. run() method의 경우 JVM만이 호출 가능하며, Runnable 상태의 여러 Thread 중 우선 순위를 가진 Thread가 결정되면 JVM이 자동으로 run() 호출을 통해 Thread가 Running 상태로 진입 한다.
- Blocked : Thread가 작업을 완수하지 못하고 잠시 작업을 멈추는 단계로 Cpu의 점유권을 상실한 상태이다. 이후 특정 메소드를 통해 Runnable 상태로 전환한다. wait() 메소드에 의해 blocked 상태가 된 Thread는 notify() 메소드가 호출 되면 Runnable 상태로 돌아 간다.
- Dead : 종료 상태로 Thread가 모두 실행되고 난 후 완료 상태를 말한다. (Done 상태라고도 한다)
'CS' 카테고리의 다른 글
객체지향 프로그래밍 (OOP) (1) 2020.12.09 잡다한 CS 지식 공부 (0) 2020.12.09 캐싱? (0) 2020.11.12 Data base 2 (0) 2020.08.16 DataBase (0) 2020.08.16