- Posted
- Filed under 글로 기록하기
Thread를 만들어서 실행시키는데, Thread가 순차적으로 실행이 되는 문제였습니다.
오늘에서야 그 이유를 알았는데, 원인은 저의 무지 때문이었습니다.
별다른 생각 없이, 정말 아무 이유없이...
이클립스 자동완성 기능 사용 중, run()이 start() 보다 위에 있다는 이유때문에...

start()와 run()이 같은 동작을 하겠거니... 이런 생각에...
new Thread().run() 을 해버렸습니다.
어제 하루종일 start()와 run()의 차이점을 인식하지 못하고, 애꿎은 컴퓨터만 탓했습니다.
오늘에서야 start()와 run()이 다르다는 것을 인지하고, 두개의 차이점을 찾아봤습니다.
start()는 실제 native 쓰레드(VMThread)를 생성하고, 새롭게 만들어진 native 쓰레드가 run()을 실행 하고, run()은 단지 Runnable 객체의 run()을 호출하는 것입니다.
즉, start()를 하기 전에는 new Thread()는 단지 하나의 객체일 뿐이고, start()를 해야만, 실제 쓰레드가 만들어지는 것입니다.
완전히 다르게 동작하는데, 이걸 똑같이 동작하다고 생각했었다니... 정말 창피합니다.