Java에서 멀티스레드를 구현하는 방법으로는 Thread 클래스를 상속받는 방법과 Runnable 인터페이스를 구현하는 방법이 있다. Thread 클래스를 상속받는 방식은 상대적으로 간단하고, 스레드의 생명 주기를 관리(시작, 중지, 대기)하는 여러 메서드도 제공하여, 멀티스레드를 쉽게 다룰 수 있는 장점이 있다. 하지만 Runnable 인터페이스를 구현하는 방법을 더 선호하는데 그 이유는 다음과 같다.
다중 상속의 유연성
Java는 다중 상속을 지원하지 않는다. 즉, 한 클래스는 오직 하나의 클래스를 상속받을 수 있다. 만약 Thread 클래스를 상속받는다면, 다른 클래스를 상속받을 수 없게 된다. 하지만 Runnable은 인터페이스이므로, 여러 클래스를 상속받을 수 있는 유연성을 제공한다. 이를 통해 다양한 기능을 가진 클래스를 만들 수 있다.
아래는 Java에서 Runnable 인터페이스를 사용하여 다중 상속의 유연성을 보여주는 예시이다. 이 예시는 Runnable을 구현하는 클래스가 다른 클래스를 동시에 상속받는 방법을 보여준다.
//기본 기능을 제공하는 클래스
class Printer {
public void print(String message) {
System.out.println("Printing: "+message);
}
}
//Runnable 인터페이스를 구현하는 클래스
class MyRunnable extends Printer implements Runnable {
@Override
public void run() {
print("Runnable is running"); //Printer의 메서드 호출
}
}
public class Main {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();
//메인 스레드에서 Printer의 메서드 호출
myRunnable.print("Hello world");
}
}
'Language > JAVA' 카테고리의 다른 글
[JAVA]메모리 구조 (0) | 2024.11.04 |
---|---|
[JAVA]정적 메소드에서 this를 사용할 수 없는 이유 (2) | 2024.11.03 |
[JAVA]예외(Exception) vs 에러(Error) (0) | 2024.09.21 |
[JAVA]currentThread() (0) | 2024.09.21 |
[JAVA]문자열 상수 풀(String Pool) (0) | 2024.09.08 |