728x90
반응형

start()와 run()

run()은 호출하는 것을 생성된 쓰레드를 실행시키는 것이 아니라 단순히 클래스에 속한 메서드를
호출하는 것입니다.
start()는 새로운 쓰레드가 작업을 실행하는데 필요한 호출스택을 생성한 다음 run을 호출해서
생성된 호출스택에 run()이 첫 번째로 저장되게 합니다.

[ 새로운 쓰레드를 생성하고 start()를 호출한 이후 호출스택의 변화 ]



위의 그림의 설명 순서
1. main메서드에서 쓰레드의 start메서드를 호출합니다.
2. start메서드는 쓰레드가 작업을 수행하는데 사용될 새로운 호출스택을 생성합니다.
3. 생성된 호출스택에 run메서드를  호출해서 쓰레드가 작업을 수행하도록 합니다.
4. 이제는 호출스택이 2개이기 때문에 스케쥴러가 정한 순서에 의해서 번갈아 가면서 실행합니다.

※ 쓰레드가 둘 이상일 때는 호출스택의 최상위에 있는 메서드일지라도 대기상태에 있을 수 있습니다.
※ 작업을 마친 쓰레드, 즉 run()의 수행이 종료된 쓰레드는 호출스택이 모두 비워지면서 이 쓰레드가 사용하던 호출스택은 사라집니다.
main메서드의 작업을 수행하는 것도 쓰레드입니다.
프로그램을 실행되기 위해서는 작업을 수행하는 쓰레드가 최소 하나는 필요하며, main메서드가 프로그램을 실행하면 기본적으로 생성되는 쓰레드입니다. 


728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,