쓰레드의 구현과 실행
1. Thread클래스를 상속
- 자바는 단일상속만 가능하기 때문에 다른 클래스를 상속받을 경우도 대비해서 밑에 방법이 더 좋다.
2. Runnable 인터페이스를 구현
-> 상속받던, 구현하던 run이라는 메서드를 구현해야하는 것은 동일하다.
-> thread를 상속받는 경우에는 this(생략가능).getName()
으로 호출하고,
runnable을 구현하는 경우에는 Thread.currentThread().getName()
을 이용한다.
start()와 run()
: run()을 작성했는데 왜 start로 실행하는가?
- 쓰레드는 생성과 실행의 과정을 거친다.
- main 메서드에서 start를 호출하면 호출스택에서 start와 main이 올라감(1번그림)
- start메서드가 새로운 호출스택을 생성함 (2번그림)
- run()을 올림 -> start의 역할 끝. 종료됨
- 각각의 쓰레드가 본인만의 호출스택을 가지고 별도로 실행함. -> 서로 독립적인 작업을 수행할 수 있음.
start를 이용하지 않으면 한 호출스택에 run과 main이 올라가서 한쓰레드에서만 돌아감
↳ start를 이용해야만 새로운 호출스택이 생기고 새로운 쓰레드가 올라갈 수 있음