본문 바로가기
개발/JAVA

[JAVA] Runnable 과 Thread의 차이

by ynzu🤍 2022. 5. 16.
반응형

위 예제 소스에 있는 Runnable이란 간단하게 말해서 Thread를 인터페이스화한 것인데, Java에서는 다중 상속이 불가능하므로 Thread를 상속 받지 못하는 경우 extends Thread가 아닌 implements로 Runnable로 처리 할 수 있다.

 

  • extends Thread
public class ThreadTest extends Thread {
	
	public void run() {
		System.out.println("thread");
	}
}

ThreadTest threadTest = new ThreadTest();
threadTest.start();

 

  • implements Runnable
public class ThreadTest implements Runnable {

	public void run() {
		System.out.println("thread");
	}
	
}

ThreadTest threadTest = new ThreadTest();
Thread thread = new Thread(threadTest);
thread.start();

 

Thread를 실행하는 방법에는 start()와 run()이 있다.
start()는 thread의 run() 메소드를 호출하고, run()메소드는 Runnable 실행 객체를 사용하여 작성된 경우만 Runnable의 run 메소드가 호출된다.
그렇지 않은 경우 이 메소드를 실행하여도 아무 것도 수행하지 않고 반환된다.

참고
run()을 호출하는 것은 생성된 스레드 객체를 실행하는 것이 아니라, 단순히 스레드 클래스 내부의 run 메서드를 실행시키는 것이다.
반면에 start()는 새로운 스레드를 실행하는데 필요한 호출 스택(call stack)을 생성한 다음에 run을 호출해서, 생성된 호출 스택에 run()이 첫 번째로 저장되게 하므로 start()를 사용하자!

 

728x90
반응형

댓글