[Tread Class JAVA](https://dori2005.notion.site/Tread-Class-bce49427af1e410c9d63ce25cf6d0cb8)와 같이 멀티 쓰레드를 위해 제공되는 기능으로, 인터페이스이다.

Runnable 인터페이스 구현하기

Thread 확장 예제와 동일한 기능을 Runnable 인터페이스를 구현하여 작성해보았습니다. 클래스 이름 뒷 부분이 extends Thread에서 implements Runnable로 바뀐 것 빼고는 동일한 코드입니다. Runnable 인터페이스는 구현할 메소드가 run() 하나 뿐인 함수형 인터페이스입니다. 따라서 Java8에서 도입된 람다를 이용해서 좀 더 깔끔하게 구현할 수도 있습니다

Thread vs. Runnable

위의 예제 코드를 보시면 Thread 클래스를 확장하는 것이 실행 방법이 미세하게 더 간단하다는 것을 볼 수 있습니다. 하지만 자바에서는 다중 상속을 하용하지 않기 때문에, Thread 클래스를 확장하는 클래스는 다른 클래스를 상속받을 수 없습니다. 반면에 Runnable 인터페이스를 구현했을 경우에는 다른 인터페이스를 구현할 수 있을 뿐만 아니라, 다른 클래스도 상속받을 수 있습니다. 따라서 해당 클래스의 확장성이 중요한 상황이라면 Runnable 인터페이스를 구현하는 것이 더 바람직할 것입니다. 실제로 많은 개발자들이 대부분의 상황에서 Thread 클래스를 확장하기보다는 Runnable 클래스를 구현하는 것을 선호합니다.

자바: Thread 클래스와 Runnable 인터페이스