Thread 클래스의 start()를 살펴보면 다음과 같다

소스 코드

/**
* Causes this thread to begin execution; the Java Virtual Machine
* calls the run method of this thread.
*

* The result is that two threads are running concurrently: the
* current thread (which returns from the call to the
* start method) and the other thread (which executes its
* run method).
*

* It is never legal to start a thread more than once.
* In particular, a thread may not be restarted once it has completed
* execution.
*
* @exception IllegalThreadStateException if the thread was already
* started.
* @see java.lang.Thread#run()
* @see java.lang.Thread#stop()
*/
public synchronized void start() {
if (started)
throw new IllegalThreadStateException();
started = true;
group.add(this);
start0();
}

private native void start0();

 예전에도 한 번 고민했던 기억이 있는 쓰레드에 관한 의문의 다시 나를 덮친다. 딴 일 많은데.. -_-;

왜 한 Thread는 한 번만 실행할 수 있는 걸까?

 물론 Runnable을 구현해서  Thread를 새로 만들어가며 작업하면 문제없이 프로그래밍을 할 수 있다. 하지만 IllegalThreadStateException을 피하는 방법(어라? 비?...)을 알고 픈게 아니라. 왜 한 번 사용한 Thread를 버려야하는지에 대한 이유가 궁금하다. (잠시 검색해봤지만 원하는 답은 아직 안나오네...)

신고
크리에이티브 커먼즈 라이선스
Creative Commons License
« PREV : 1 : ··· : 59 : 60 : 61 : 62 : 63 : 64 : 65 : 66 : 67 : ··· : 87 : NEXT »

티스토리 툴바