티스토리 뷰

Development

[Java] Thead start() vs run()

devbible 2014. 2. 26. 14:47

Thread 의 run 과 start의 차이점이다.

둘중 아무거나 실행해도 동작은 하지만 차이점은 알고쓰자.


start() : 실제 Native Thread를 생성하고, 신규 생성된 Thread에서 run이 실행됨.

run() : Thread 내의 run 함수를 실행


요점은 start()를 해야 신규Thread로 동작, run()을 하면 현재Thread에서 동작한다는 것.



Thread.java - start() (Language : java)
public synchronized void start()
{
    if (vmThread != null || group == null)
        throw new IllegalThreadStateException();

    VMThread.create(this, stacksize);
}


Thread.java - run() (Language : java)
public void run()
{
    if (runnable != null)
        runnable.run();
}



현재 java 버전에서는 위 코드보다 더 길어졌지만 원리를 알기위해 수정하지 않았다.


무엇이든 그냥쓰지말고 원리를 알고써야한다.



[출처] http://dont.pe.kr/tt/79

댓글