자바 Timer, TimerTask 사용에 관해서 질문이 있습니다.
글쓴이: 갈길이멀다... / 작성시간: 일, 2011/05/22 - 4:48오후
저번에 올린건 너무 길어서 그런가 아무도 답변을 안해주시더라구요 ....... ㅠㅠ
타이머로 일정 시간마다 반복하는 작업이 아니라
패킷을 전송하고 타이머를 작동시킨 다음에
에크를 받으면 타이머를 종료시키고 다음 패킷 전송 시에
다시 타이머를 작동시키는 과정을 반복합니다.
만약 에크를 받지 못하면 타이머 시간이 종료되면 패킷을 재전송하는 식으로
구현했습니다.
그런데 타이머를 한번 취소하고 나니
그 다음 타이머 스케쥴 부분에서
java.lang.IllegalStateException: Timer already cancelled.
at java.util.Timer.sched(Unknown Source)
at java.util.Timer.schedule(Unknown Source)
at Chat$SendPacket.run(Chat.java:852)
이 에러가 나옵니다. ㅜ
한 번 쓴 타이머는 다시 못쓴다고 해서
timer_set=true;
timer=new Timer();
time_scheduler=new Time_scheduler(s,dp);
timer.schedule(time_scheduler, TIMEOUT);
이런식으로 다시 다 새로 선언했는데 왜 그럴까요? ㅠㅠ
제발 답변 좀 부탁드립니다.
Forums:
줏어듣기론 Timer는 thread로 구현되었다고
줏어듣기론 Timer는 thread로 구현되었다고 들었습니다.
TimerTask가 Runnable를 구현하니, Timer는 당연히 Thread로 돌릴거고,
내부 Thread가 cancel되면, 다시 Thread를 만들어주기 위해서 Timer를 생성해줘야 할것 같네요.
nil.
댓글 달기