개발/자바

Thread 클래스 상속 vs Runnable 인터페이스 구현

피터JK 2025. 2. 17. 13:56
728x90

Thread와 Runnable의 차이는 Java에서 멀티스레드를 구현하는 방식과 관련이 있습니다.

1. Thread 클래스 상속 vs Runnable 인터페이스 구현

  • Thread 클래스는 직접 상속하여 사용합니다.
  • Runnable은 인터페이스를 구현하여 사용합니다.

2. Thread 클래스 상속 방식

class MyThread extends Thread {
    public void run() {
        System.out.println("Thread 실행 중...");
    }

    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.start(); // 새로운 스레드에서 run() 실행
    }
}
  • Thread 클래스를 상속하면 다른 클래스를 상속할 수 없음 (Java는 단일 상속만 지원).

3. Runnable 인터페이스 구현 방식

class MyRunnable implements Runnable {
    public void run() {
        System.out.println("Runnable 실행 중...");
    }

    public static void main(String[] args) {
        Thread thread = new Thread(new MyRunnable());
        thread.start();
    }
}
  • Runnable을 구현하면 다른 클래스를 상속할 수 있음유연한 설계 가능.

4. 차이점 요약

비교 항목 Thread 클래스 Runnable 인터페이스
구현 방식 Thread 상속 Runnable 구현
실행 방식 start() 호출 new Thread(new Runnable()).start();
다중 상속 불가능 (다른 클래스 상속 불가) 가능 (다른 클래스 상속 가능)
객체 재사용 불가능 (한 번 실행된 Thread 객체는 재사용 불가) 가능 (같은 Runnable 객체를 여러 Thread에서 사용 가능)

5. 결론

  • Thread 클래스 상속
    • 간단한 구조로 스레드를 만들 때 사용.
    • 하지만 다른 클래스를 상속할 수 없음.
  • Runnable 인터페이스 구현
    • 유연한 설계가 가능하고, 같은 객체를 여러 스레드에서 실행 가능.
    • 다른 클래스를 상속해야 할 경우 필수적으로 사용.

일반적으로 Runnable을 구현하는 방식이 더 권장됨!
특히 스레드 풀(Thread Pool)에서 재사용할 수 있어 더 효율적입니다.

728x90

'개발 > 자바' 카테고리의 다른 글

Thread ExecutorService API  (0) 2025.02.17
Thread 설정 및 주요 메서드  (0) 2025.02.17
모킹(Mock) 테스트  (0) 2025.02.14
JUnit 4 vs JUnit 5 어노테이션 비교  (0) 2025.02.14
Assertions 클래스 (JUnit 5)  (0) 2025.02.14