[자바] 멀티 스레드 ① 작업 스레드 생성하고 실행하기

Java

2020. 11. 23.

스레드의 기본 개념

crystalog.tistory.com/109

 

메인 스레드

모든 자바 애플리케이션은 메인 스레드(main thread)가 main() 메소드를 실행하면서 시작된다.

메인 스레드는 필요에 따라 작업 스레드들을 만들어서 병렬로 코드를 실행할 수 있다.

 

작업 스레드 생성하기

1) Thread 클래스로부터 직접 생성

java.lang.Thread 클래스로부터 작업 스레드 객체를 직접 생성하려면 다음과 같이 Runnable을 매개값으로 갖는 생성자를 호출해야한다.

Thread thread = new Thread(Runnable target);

Runnable은 작업 스레드가 실행할 수 있는 코드를 가지고 있는 객체라고 해서 붙여진 이름이다.

Runnable은 인터페이스 타입이므로 구현 객체를 만들어 대입해야 한다.

Runnable 인터페이스에는 run() 메소드 하나가 정의되어 있는데, 실행코드가 없으므로 구현 클래스는 run()을 재정의해야한다.

//구현 클래스 작성
class Task implements Runnable {
    public void run() {
        //스레드가 실행할 코드
    }
}

//구현 객체 생성 후, 이 것을 매개값으로 Thread 생성자 호출
Runnable task = new Task();
Thread thread = new Thread(task);

 

코드를 절약하기 위해 Runnable 익명 객체를 매개값으로 쓰기도 한다. 이 방법이 더 많이 사용된다.

Thread thread = new Thread(new Runnable() {
    public void run() {
        //스레드가 할 일
    }
}

람다식을 사용하기도 한다.

Thread thread = new Thread( ()-> {
    //스레드가 실행할 코드
    }
);

 

2. Thread 하위 클래스로부터 생성

작업 스레드가 실행할 작업을 Runnable로 만들지 않고, Thread의 하위 클래스로 작업 스레드를 정의하면서 작업 내용을 포함 시킬 수도 있다.

Thread 클래스를 상속한 후 run 메소드를 재정의(Overriding)해서 스레드가 실행할 코드를 작성한다.

public class WorkerThread extends Thread {
    @Override
    public void run() {
        //스레드가 실행할 코드
    }
}

Thread thread = new WorkerThread();

이 방법도 마찬가지로 익명 객체로 작업 스레드 객체를 생성할 수 있다.

Thread thread = new Thread() {
    public void run() {
        //스레드가 실행할 코드
    }
};

 

 

작업 스레드 실행하기

위의 방법으로 생성한 작업 스레드 객체에 start() 메소드를 호출하면, 작업 스레드는 자신의 run() 메소드를 실행한다.

thread.start();

'Java' 카테고리의 다른 글

[자바] 멀티 스레드 ③ 스레드 우선순위  (0) 2020.11.23
[자바] 멀티 스레드 ② 스레드의 이름  (0) 2020.11.23
[스크랩] MVC 패턴이란?  (0) 2020.11.18
[스크랩] 의존성 주입  (0) 2020.11.18
[스크랩] JSP란?  (0) 2020.11.18