1. 나만의 thread class를 만들기 위해 thread class를 상속받는다.
2. 동작을 시키기 위한 run()을 override
3. 객체 생성
4. 객체에서 start()함수를 호출하면 run()함수가 호출되면서 쓰레드 단위 작업이 실행
상속대신 thread를 생성해서 익명클래스로 사용해도 무방하다.
thread의 run을 담당하는 interface Runnable을 클래스화해서 thread를 생성할 때 던져주면 thread의 별도의 override 없이 바로 사용이 가능하다.
위와 같이 선언하여 함수가 불릴 때마다 t.start()를 통해 run()을 작동시키면 멀티 태스킹이 가능하다.
(Tip) 쓰레드는 extends와 implements 2가지로 구현이 가능한 데, 아무래도 제약이 적은 implements로 구현해야 사용할 수 있는 폭이 넓어진다.