<aside>
💡 정리
- start()는 새로운 스레드를 생성 후 run() 메서드를 실행
- run()은 메소드만 호출 할 뿐
</aside>
스레드의 start()와 run() 메서드는 다음과 같은 중요한 차이점이 있습니다:
- 실행 방식:
- start(): 새로운 스레드를 생성하고 해당 스레드의 run() 메서드를 실행합니다.
- run(): 단순히 클래스에 선언된 메서드를 현재 스레드에서 호출합니다.
- 호출 스택:
- start(): 새로운 스레드를 위한 독립적인 호출 스택을 생성합니다.
- run(): 기존 스레드의 호출 스택에서 실행됩니다.
- 동시성:
- start(): 멀티스레드 환경을 생성하여 병렬 실행이 가능합니다.
- run(): 메인 스레드에서 순차적으로 실행됩니다.
- 실행 순서:
- start(): 운영체제의 스케줄러에 의해 실행 순서가 결정됩니다.
- run(): 호출된 순서대로 실행됩니다.
- 재사용:
- start(): 한 번만 호출할 수 있습니다. 재실행이 불가능합니다.
- run(): 여러 번 호출할 수 있습니다.
따라서, 멀티스레딩을 구현하려면 start() 메서드를 사용해야 하며, run() 메서드를 직접 호출하는 것은 단순히 일반 메서드를 호출하는 것과 같습니다