Study
[JAVA] Process(프로세스)와 Thread(스레드)
jeonniu
2022. 6. 1. 19:52
스레드에 대한 설명 전에 프로세스에 대해 알아보자.
프로세스(Process)는 간단히 말해 실행중인 프로그램을 의미한다.
프로그램을 실행하면 운영체제로부터 실행에 필요한 자원을 할당받아 프로세스가 된다.
프로세스의 구성 요소는 다음과 같다.
프로세스는 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원과 스레드로 구성되어 있다.
스레드(Thread) 란?
하나의 프로세스 내부에 독립적으로 실행되는 하나의 작업 단위
모든 프로세스에는 최소 1개 이상의 스레드가 존재하며,
둘 이상의 스레드를 가진 멀티 스레드 프로세스(Multi Thread Process) 라고 한다.
멀티 스레드 프로세스는 멀티 스레딩이 가능하다.
멀티 스레딩(Multi Threading) 이란?
하나의 프로세스 내에 여러 스레드가 동시에 작업을 수행하는 것
실제로 1개의 CPU는 한 번에 한 가지의 작업만 수행할 수 있지만,스레드가 짧은 시간 동안 여러 작업을 동시에 번갈아 수행함으로써 멀티 스레딩을 하는 것처럼 보이는 것이다.
• 멀티 스레딩의 장점
- CPU의 사용률을 향상시킨다.
- 자원을 효율적으로 사용할 수 있다.
- 사용자에 대한 응답성이 향상된다.
- 작업이 분리되어 코드가 간결해진다.
• 멀티 스레딩의 단점
- 전체 프로세스에 영향을 줄 수 있다.
- 성능 저하가 동반된다.
스레드(Thread)의 생성 주기
1. New상태 - 객체를 생성한다. - 스레드가 만들어진 상태로 아직 start() 메소드가 호출되지 않았다. 2. Runnable(실행대기)상태 - 스레드 실행을 위한 준비 단계이다. - 코드 상에서 start() 메소드를 호출하면 run() 메소드에 설정된 쓰레드가 Runnable 상태로 진입한다. 3. Running(실행)상태 - CPU를 점유하여 실행되고 있는 상태이다. - Runnable 상태에 있는 여러 스레드 중 우선 순위를 가진 스레드가 결정되면, - JVM이 자동으로 run() 메소드를 호출하여 스레드가 Running 상태로 진입한다. 이 때 , run() 메소드는 JVM만이 호출할 수 있다. 4. Terminated(실행종료)상태 - Running 상태에서 스레드가 모두 실행되고 난 후, 완료된 상태이다. - run() 메소드 사용을 완료시 스레드가 종료되며, 해당 스레드는 재시작할 수 없다. 5. Blocked(일시정지)상태 - 사용하고자 하는 객체의 LOCK이 풀릴 때까지 기다리는 상태이다. - wait() 메소드에 의해 BLOCKED 상태가 된 스레드는 notify() 메소드가 호출되어야 다시 Runnable 상태로 간다. - sleep() 메소드에 의해 BLOCKED 상태가 된 스레드는 지정된 시간이 지나면 다시 Runnable 상태로 간다. |
++
- Single Thread Code ex (Thread 클래스 상속)
- Single Thread Code ex (Runnable 인터페이스 상속)
- Multi Thread ex(1)
- Multi Thread ex(2)