쓰레드를 사용 할때~
텃골
쓰레드를 사용 할때 start()를 오버라이딩 해서 쓰는데요
public void start() {
thread = new Thread(this, name);
thread.start();
isRunning = true;
}
여기서 질문이 thread를 스타트를 하면은 바로 run()함수의 내용이 실행이 되는 걸로 알고 있습니다.
그런데 밑에 변수 isRunning를 true로 변경해 주는데 이건 언제 실행이 되는 건가요?
thread.start를 해도 start()함수를 끝내고 run()메소들에 들어있는 작업을 하는건가요?
헷갈려서.... 좀 갈켜주세요
-
찬솔나라
isRunning=true 를 왜 run 메소드 안에 넣지 않고, 바깥에다가 넣었나요? run 메소드가 실행되다가 중간에 Exception을 만났을 경우는 고려가 안되어 있네요.
-
미국녀
무심코 넘어가다가 찬님 말씀 들어보니 그러네요. ㅋ
-
민트맛사탕
헉!!!!
누가 Thread를 쓸때 start()를 오버라이딩해서 쓰라고 하던가요???
ㅎㄷㄷㄷㄷ
Thread는 run()을 오버라이딩하는겁니다.ㅎㄷㄷㄷㄷ -
잇힝
감사합니다.
-
앨런
thread.start(); 를 호출하면 여기서 새로운 스레드가 분기합니다. 그러니까 thread.start()라는 코드를 실행하는 스레드를 T1 이라고 하면 thread.start(); 에 의해서 새로운 T2라는 스레드가 생깁니다.
T1은 start();를 호출하고 이어지는 isRunning = false; 명령을 실행합니다. 이와는 독립적으로 T2가 run() 메소드를 실행하구요..
정리하면 T1이 isRunning = false; 실행하는 것과