[CS] Thread

박상민·2023년 3월 9일
0

Computer Science

목록 보기
12/29

📌 Thread?

  • 메모리를 할당받아 실행 중인 프로그램을 프로세스라고 하는데 프로세스 내에서 실행되는 흐름의 단위를 의미한다.
  • 실행중에 멈출 수 있으며 동시에 수행이 가능하다.

📌 Thread 생성

  1. Thread 클래스를 상속받아 생성
// 선언
class ThreadA extends Thread {
	public void run() {
		// Thread 내에서 실행할 코드
	}
}

// 생성 및 사용
ThreadA TA = new ThreadA();
// Thread는 start 메서드를 통해 시작할 수 있다.
TA.start();
  1. Runnable 인터페이스를 구현하여 생성
// 선언
public class RunnableTest implements Runnable{
	public void run() {
		try {
        	// Thread 내에서 실행할 코드
        } catch(InterruptedException e){
        	e.printStackTrace();
        }
    }
}

// 생성 및 사용
RunnableTest runnable = new RunnableTest();
Thread th = new Thread(runnable);
th.start();

📌 Thread의 특징

  • run() 메소드가 종료하면 Thread는 종료된다.
  • 한번 종료한 Thread는 다시 시작시킬 수 없다.
  • 한 Thread에서 다른 Thread를 강제 종료할 수 있다.

📌 Thread의 상태

  1. NEW
    Thread가 생성되었지만 Thread가 아직 실행할 준비가 되지 않은 상태
  2. RUNNABLE
    Thread가 실행되고 있거나 실행준비되어 스케줄링을 기다리고 있는 상태
  3. WAITING
    다른 Thread가 notify(), notifyAll()을 불러주기를 기다리고 있는 상태 (동기화)
  4. TIMED_WAITING
    Thread가 sleep(n) 호출로 인해 n 밀리초동안 잠을 자고 있는 상태
  5. BLOCK
    Thread가 I/O작업을 요청하면 자동으로 Thread를 BLOCK상태로 만든다.
  6. TERMINATED
    Thread가 종료된 상태
profile
💡 클린코드를 지향하는 Backend Developer

0개의 댓글