Thread에서 또다시 발목을 잡혔네요.


먼저 제가 테스트하는 프로그램은 1초씩 증가되어 텍스트뷰에 보여지는 것을 하려고 합니다. 그런데 그게 맘처럼 잘 되지가 않네요.
Thread부분의 소스는 아래와 같습니다.

 public void Timer(){
		Thread availTimer=new Thread(){
			public void run(){
				while(CONDITION){
					mHandler.sendMessageDelayed(Message.obtain(mHandler, TIMER_SET), 10);
					//mHandler.sendMessage(Message.obtain(mHandler, TEST));
				}
			}
		};
		availTimer.start();
	}

위와 같은 함수를 하나 만들어서 Handler에 호출을 하고 있습니다. Thread에서는 run에 while문을 실행함으로써 반복적인 수행을 하는 것을로 알고 있는데요.

 case TIMER_SET:
					TOTAL_TIME++;
					TextView availableTime=(TextView)findViewById(TV_ID);
					availableTime.setText("AVALIABLE TIME: "+Long.toString(TOTAL_TIME/60)+"."+Long.toString(TOTAL_TIME%60));
					if(TOTAL_TIME>=MAX_AVAILABLE_TIME){
						CONDITION=false;
					}

바로 위의 소스는 핸들러에 넣은 부분입니다. sendMessageDelayed를 하면 10milli sec다음에 메세지가 전송되서 1초마다 해당 메세지를들러에서 받아 실행할거라고 생각을 했습니다만, 잘 되지가 않더라구요.

질문입니다.

위의 예제에서 sendMsgDelayed 를 사용하게 되면, while 문에 의해서 계속해서 불리는 건가요? senMsgDelayed의 처리가 되는 것과 상관없이요. 아니면 1초를 기달렸다가 while 문이 다시 처음을 수행하게 되는 건가요? (질문이 좀..)

다시 예를 들면, 함수는 간단히 이름을 쓰겠습니다.

while(true){
sendMsgDelayed(1초);
setText("1");
}

이렇게 된다고 가정했을 경우에, 1초후에 "1" 이 세팅되나요? 아니면 sendMsgDelayed와 상관없이 "1"이 세팅이 되는건가요?


어렵네요... ㅠ ㅠ