[Java] Thread Class vs Runnable interface

Web 개발러 Velog!·2022년 1월 3일
0

Java에서 쓰레드를 사용하는 방법에는 Thread 클래스를 상속하는 방법과 Runnable 인터페이스를 사용하는 방법이 있다.
두 가지 방법은 어떤 차이점이 있을지 궁금하여 포스팅을 남긴다.

1. Thread Class

Thread 클래스를 상속하면 기본적으로 run() 함수를 오버라이딩(overriding)하여 수행할 일을 작성하게 된다. 사용 예는 다음과 같다.

public class ThreadEx {
    public static void main(String[] args) {
        Thread t = new MyThread();
        t.start();
    }
}
class MyThread extends Thread {
    @Override
    public void run() {
            System.out.println( "Thread class start!" );
        }
    }
}

2. Runnable 인터페이스

쓰레드를 사용하고자하는 클래스에 Runnable 인터페이스를 선언하고 Thread 클래스와 마찬가지로 run() 함수를 오버라이딩하여 수행할 작업들을 작성한다. 사용 예는 다음과 같다.

public class RunnableEx {
    public static void main(String args[]) {
        Runnable r = new MyRunnable();
        Thread t = new Thread(r);
        t.start();
    }
}

class MyRunnable implements Runnable {
    @Override
    public void run() {
       System.out.println( "Thread interface start!" );
    }
}

3. Thread class vs Runnable Interface

사실상 Thread 클래스 내부를 들여다보면 Runnable 인터페이스를 확장하여 사용하고 있기 때문에 결국 뿌리는 같다고 볼 수 있다. 그러나 차이점을 얘기하자면 자바는 다중 상속을 허용하지 않기 때문에 확장성이 더욱 필요해지는 프로그램에서는 인터페이스를 사용하는 것이 효율적이라고 볼 수 있다.

profile
while(true) { 손가락 관절염++ };

0개의 댓글