📌 Thread?
- 메모리를 할당받아 실행 중인 프로그램을 프로세스라고 하는데 프로세스 내에서 실행되는 흐름의 단위를 의미한다.
- 실행중에 멈출 수 있으며 동시에 수행이 가능하다.
📌 Thread 생성
- Thread 클래스를 상속받아 생성
class ThreadA extends Thread {
public void run() {
}
}
ThreadA TA = new ThreadA();
TA.start();
- Runnable 인터페이스를 구현하여 생성
public class RunnableTest implements Runnable{
public void run() {
try {
} catch(InterruptedException e){
e.printStackTrace();
}
}
}
RunnableTest runnable = new RunnableTest();
Thread th = new Thread(runnable);
th.start();
📌 Thread의 특징
- run() 메소드가 종료하면 Thread는 종료된다.
- 한번 종료한 Thread는 다시 시작시킬 수 없다.
- 한 Thread에서 다른 Thread를 강제 종료할 수 있다.
📌 Thread의 상태
- NEW
Thread가 생성되었지만 Thread가 아직 실행할 준비가 되지 않은 상태
- RUNNABLE
Thread가 실행되고 있거나 실행준비되어 스케줄링을 기다리고 있는 상태
- WAITING
다른 Thread가 notify(), notifyAll()을 불러주기를 기다리고 있는 상태 (동기화)
- TIMED_WAITING
Thread가 sleep(n) 호출로 인해 n 밀리초동안 잠을 자고 있는 상태
- BLOCK
Thread가 I/O작업을 요청하면 자동으로 Thread를 BLOCK상태로 만든다.
- TERMINATED
Thread가 종료된 상태