Java에서 Thread 상속 vs Runnable 구현 - 어떤 것이 더 좋을까?

JunSuPark·2025년 2월 12일

Java에서 멀티스레드를 사용할 때, Thread 클래스를 직접 상속받는 방법과 Runnable 인터페이스를 구현하는 방법이 있다. 이 두 가지 방식은 각각 장점과 단점이 있는데, 일반적으로 Runnable을 구현하는 방식이 더 추천된다. 왜 그런지 한 번 알아보자!

  1. Thread 클래스를 상속하는 방식

✅ 장점

구현이 간단함 → Thread 클래스를 상속받고 run() 메서드만 오버라이딩하면 됨.

❌ 단점

상속의 제한 → Java는 단일 상속만을 지원하므로, 이미 다른 클래스를 상속받고 있다면 Thread를 상속받을 수 없음.

유연성이 부족함 → 실행할 작업을 스레드와 분리해서 관리하기 어려움.

📌 예제 코드

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

public class Main {
public static void main(String[] args) {
MyThread t = new MyThread();
t.start();
}
}

  1. Runnable 인터페이스를 구현하는 방식

✅ 장점

상속이 자유로움 → 이미 다른 클래스를 상속받고 있어도 Runnable을 구현할 수 있음.

코드의 분리 → 스레드와 실행할 작업을 분리하여 관리할 수 있어 유지보수가 쉬움.

자원 관리가 용이함 → 여러 스레드가 같은 Runnable 객체를 공유할 수 있어 자원을 효율적으로 관리할 수 있음.

❌ 단점

코드가 약간 복잡해짐 → Runnable 객체를 생성하고 이를 Thread에 전달하는 과정이 필요함.

📌 예제 코드

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

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

  1. 결론

✅ Runnable 인터페이스를 구현하는 방식을 사용하자!

Runnable 방식이 Thread 상속 방식보다 유연하고 유지보수하기 쉬운 코드 작성이 가능하다. 특히, 객체 지향적으로 코드를 관리하고 싶다면 Runnable을 적극적으로 활용하는 것이 좋다!

🚀 즉, Thread를 상속하는 방식은 단순하지만 제약이 많고, Runnable을 구현하는 방식이 더 확장성이 좋다!

profile
배움을 추구하는 개발자

0개의 댓글