[Java] Thread와 Runnable에 대한 이해 및 사용법

Untitled

쓰레드란 프로그램 실행의 가장 작은 단위이다.

1개의 쓰레드 만으로는 동시에 여러 작업을 할 수 없다.

Thread와 Runnable은 자바 초기부터 멀티 쓰레드를 위해 제공되었던 기술

Thread 클래스에 대한 설명

start를 메소드를 호출하여 JNI를 통해 JVM이 스레드를 실행을 해야함

run을 직접 호출하면 메인 스레드에서 객체의 메소드를 호출하는 것에 불과함.

public synchronized void start() {
    if (threadStatus != 0)
        throw new IllegalThreadStateException();

    group.add(this);

    boolean started = false;
    try {
        start0();
        started = true;
    } finally {
        try {
            if (!started) {
                group.threadStartFailed(this);
            }
        } catch (Throwable ignore) {
        
        }
    }
}

start 메소드는 밑의 단계를 거침

스레드는 New, Runnable, Wating, Timed Wating, Terminated 5개 상태가 있음

실행 가능 한 지 체크 하는건 New 상태인지를 확인 하는 것

스레드 그룹이란 서로 관련있는 쓰레드를 하나의 그룹으로 묶어 다루기 위한 장치인데, 자바에서는 ThreadGroup 클래스를 제공한다.

스레드 그룹에 실행 준비된 쓰레드가 있음을  알려주고, 관련 작업들이 내부적으로 진행된다.

private native void start0();