● Run()
- run()을 호출하는 것은 생성된 쓰레드를 실행시키는 것이 아니라 단순히 클래스내에 속한 메서드 하나를 호출하는 것이다.
● Start()
- start()는 run()과 달리 쓰레드가 작업을 실행하는데 필요한 호출스택(Call Stack)을 생성한 다음,
run()을 호출해서, 생성된 호출스택에 run() 이 첫 번째로 저장되게 한다.
모든 쓰레드는 독립적인 작업을 수행하기 위해 자신만의 호출스택을 필요로 하기 때문에, 새로운 쓰레드를 생성하고
실행시킬 때 마다 새로훈 호출스택이 생성되고 쓰레드가 종료되면 작업에 사용된 호출프택은 소멸된다.
1) main 메서드에서 쓰레드의 start 메서드 호출
2) start 메서드는 쓰레드가 작업을 수행하는데 사용될 새로운 호출스택을 생성
3) 생성된 호출스택에 run 메서드를 호출해서 쓰레드가 작업을 수항하도록 한다.
4) 이제는 호출스택이 2개이기 때문에 스케쥴러가 정한 순서에 의해서 변갈아 가면서 실행된다.
※ 결론은 start() 를 쓰는게 확실함.
'공부 > JAVA' 카테고리의 다른 글
JAVA_[ JVM의 메모리구조 ] (0) | 2015.02.10 |
---|---|
JAVA_[Thread join()] (0) | 2015.02.09 |
JAVA_[ 리눅스 권한변경 ] (0) | 2014.12.26 |
JAVA_[ map의 Key, Value Iterator 으로 자동으로 불러오기 ] (0) | 2014.12.10 |
JAVA_[ EJB란? ] (0) | 2014.11.05 |