상세 컨텐츠

본문 제목

Thread를 생성하는 3가지 방법

IT이야기/Java

by Rahs 2017. 2. 8. 15:57

본문












국비지원 교육과정에서 강사님께서 설명해주셨던 스레드 생성방법 3가지.

틀림없이 이론 수업 과정에서 각각의 방법을 사용해봤지만,

역시 반복해서 숙달했던 것이 아니다보니 반년이 지난 지금, 머릿속에는 어렴풋한 형태만이 남아있을 뿐인 겁니다.


수업자료를 다시 뒤져서 배운 내용을 정리해놓습니다. 제발 이런게 좀 기억에 오래 남았으면..




1. Thread 클래스를 상속하기


가장 일반적이고 단순한 방법이라 생각됩니다.

Thread를 상속한 사용자 클래스에서 run 메서드만 오버라이드 하여 사용하는 방법입니다.


1
2
3
4
5
6
7
8
9
10
11
12
public class Main {
    public static void main(String[] args){
        Thread thread = new UserThread();
        thread.start();
    }
}
 
class UserThread extends Thread {
    public void run(){
        System.out.println("Thread is running.");
    }
}
cs



2. Runnable interface 이용하기


필요에 따라 이미 다른 클래스를 상속을 한 경우, 다중 상속(extension)을 허용하지 않는 Java에서는

Thread 클래스를 추가적으로 상속할 수가 없습니다. 이런 경우에 활용할 수 있는 방법입니다.

다중 구현(implement)은 허용이 되니 말입니다.


이름 그대로 불필요한 UselessClass를 이미 상속하고 있지만, Runnable interface를 구현하고,

이를 Thread 객체 생성자에 인자로 넣어줌으로써 아래와 같이 Thread 생성이 가능합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Main {
    public static void main(String[] args){
        Thread thread = new Thread(new UserThread());
        thread.start();
    }
}
 
class UselessClass {}
 
class UserThread extends UselessClass implements Runnable{
    @Override
    public void run() {
        System.out.println("Thread is running.");
    }
}
cs



3. 익명 클래스 이용하기


개인적으로 익명 클래스를 활용해본 적이 없어서 특별히 어떤 경우에 효용을 가지는지는 아직 모르겠습니다.

기능상 재활용의 가능성이 전무한 경우에 사용이 되지 않을까 추측합니다만...

아무튼, 아래와 같이 익명 클래스를 이용해서도 활용이 가능합니다.


1
2
3
4
5
6
7
8
9
public class Main {
    public static void main(String[] args){
        new Thread() {
            public void run(){
                System.out.println("Thread is running");
            }
        }.start();
    }
}
cs




 Java에서 스레드를 생성하는 3가지를 다시 되짚어서 정리해봤습니다.


스윗한 하루 되시기 바랍니다 :D


#Referenced

비트캠프 Java framework 기반의 S/W 엔지니어 양성과정 이론수업 자료

블로그에 프로그래밍 소스 코드 올리는 방법 (http://www.jynote.net/656)

관련글 더보기

댓글 영역