작성
·
295
·
수정됨
답변 2
1
안녕하세요?
먼저 쓰레드를 구현하기 위해서는 Thread 클래스를 직접 상속하거나 Runnable 인터페이스를 구현하는 방법을 사용할 수 있습니다.
1) Thread 클래스를 직접 상속
public class CleanThread extends Thread {
public void run() { ... }
}
CleanThread cleanThread = new CleanThread();
cleanThread.start();
2) Runnable 인터페이스를 구현
public class CleanRunnable implements Runnable {
public void run() { ... }
}
CleanRunnable cleanRunnable = new CleanRunnable();
Thread thread = new Thread(cleanRunnable);
thread.start();
다른 클래스를 이미 상속하는 경우라면 Thread 클래스도 상속할 수는 없기 때문에 보통 Runnable 인터페이스를 구현하는 식으로 활용하는데요.
Runnable 인터페이스에는 start() 메소드가 없고 run() 메소드만 있습니다. run() 메소드를 그대로 호출하게 되면 이는 별도의 쓰레드를 생성하여 동시에 실행되는 것이 아니라 그냥 일반적인 메소드가 호출되는 것과 같아요. 그래서 Runnable 인터페이스를 구현한 클래스(예제에서는 CleanRunnable)로부터 객체(예제에서는 cleanRunnable)를 만들게 되면, 새로운 Thread 객체(예제에서는 thread)를 만들면서 생성자의 전달값으로 이를 전달해줘야 합니다. 그래야 start() 메소드를 호출할 수 있게 되고 결과적으로 새로 만들어진 쓰레드에서 run() 메소드에 정의된 동작이 실행될 수 있답니다 😊
감사합니다.
0
아 설명 감사합니다! 제가 착각하고있었네요 Thread클래스랑 Runnable인터페이스랑 사용자가 만든 01Thread 02Runnable 클래스랑 이름이 비슷하다보니 머릿속에서 살짝 꼬였었는데 단번에 이해했습니다