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 |