Thread Runnable Interface
- Runnable Interface
1. Interface 구현을 통한 Thread
run메서드를 갖고있는 Runnalble Interface 구현 Thread 클래스 상속을 통한 방법과 달리 start()메서드가 없다 별도의 Thread 생성 후 Runnable 인터페이스를 인자로 넘겨주어야 함
/* Runnable Interface */
class foo implements Runnable{ // Runnable Interface
@Override
public void run() { // run메서드 오버라이딩
// do something...
}
}
package thread.basic;
public class Ex2_RunnableTest {
public static void main(String[] args) {
// MakeCar2 mc1 = new MakeCar2("차틀 만들기"); // 인터페이스 구현
// Thread t1 = new Thread(mc1); // 인터페이스 객체를 Thread 인자로
// t1.start(); // start() 호출 -> run() 호출됨 //Runnable Interface를 인자로 갖고있는 thread이므로 start()메서드
//
// MakeCar2 mc2 = new MakeCar2("도색");
// Thread t2 = new Thread(mc2);
// t2.start();
// Thread t2 = new Thread(new MakeCar2("도색")); 1단계 축약형
new Thread(new MakeCar2("도색")).start(); // 2단계 축약형 ****
new Thread(new MakeCar2("차틀만들기")).start();
System.out.println("프로그램 끝");
}
}
class MakeCar2 implements Runnable{ // Runnable 인터페이스 구현
String work;
public MakeCar2(String work){ // 생성자
this.work = work;
}
public void run() { // run메서드 오버라이딩
for(int i=0; i<5; i++) {
System.out.println(work +"작업중");
try { // 눈으로 확인하기 위해서
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
2. Runnable VS Thread
Thread 클래스 상속의 경우 다른 클래스 상속이 불가능하며, Runnable Interface구현의 경우 run메서드 구현만 해주면 되고 다른 클래스 상속이 가능하다