start()와 run()에 대한 예제를 보자.
간단한 예제를 보자.
아래 두개의 클래스가 있다.
우선 메인 메소드가 있는 클래스에서 다른 클래스(스레드를 상속받은) 객체를 생성하고
start()메소드를 호출하면 스레드가 생성이 된다. 이 말은 start()를 호출하면 run()메소드가 호출되고
그 후 다시 시점은 메인메소드가 있는 클래스로 돌아 온다.
물론 run()에 의한 스레드는 독립적으로 작동이 되는 것이다.
그래서 main()에서 실행된 스레드 그리고 start()에 의한 스레드 총 2개가 있다.
그럼 아래 예제에서 보면 스레드를 상속받은 클래스에서 일부러 stack을 trace해보았다.
위의 오류를 보면 main메소드에서 실행되는것이 아니라 run->throwException으로 두단계로 끝냈다.
두번째 그렇다면 직접 메인메소드에서 start()를 호출하지 않고 run()을 호출되면 어떻게 될까?
아래예제는 직접 run()를 호출하였다.
stack trace를 보자.
보면 3단계로 되어 있다. main() -> run() -> throwException
이 말은 스레드가 생성이 된게 아니고 main()에 의한 스레드 즉 1개의 스레드가 쭉 내려 간것일 뿐이다.
이렇게 하면 안된다.
또 다른 예제를 보자.
단순 덧셈 계산하는 로직을 만들자. user부터 숫자를 입력받고 총합을 구하는 로직.
시간이 길어지면 "잠시만 기달려주세요!" 라는 메세지를 띄우자(jQuery 처럼)
결과를 보면 main과 run은 따로 움직이는걸 볼 수 있다.
'강좌 > JAVA THREAD' 카테고리의 다른 글
자바 쓰레드(Thread) - 쓰레드(Thread)의 중지 예제 (0) | 2013.04.06 |
---|---|
자바 쓰레드(Thread) - 쓰레드(Thread)의 중지 (0) | 2013.04.06 |
자바 쓰레드(Thread) - Thread와 객체의 구분에 대한 예제 (0) | 2013.04.06 |
자바 쓰레드(Thread) - Thread와 객체의 관계 (0) | 2013.04.06 |
자바 쓰레드(Thread) - 싱글쓰레드(single thread)와 멀티쓰레드(multi thread) 예제 2 (0) | 2013.04.05 |