怎么样重复利用TimerTask对象?

zmm046 2006-05-25 02:51:20
一个TimerTask对象 在执行后 其state会变为EXECUTED
如果再次使用会报异常

state属性为friedly的 没有办法直接改变它的值

有没有办法重复使用TimerTask呢?

即 如果
Timer timer = new Timer();
TimerTask timerTask = new TimerTask{
public void run() {
........
}
};
timer.schedule(timerTask ,m);

.........

timer.schedule(timerTask ,n); //这里会报异常 原因参考附jdk代码


附:Timer(java.util.Timer) sched 方法中
............
............
if (task.state != TimerTask.VIRGIN)
throw new IllegalStateException(
"Task already scheduled or cancelled");
............
............


TimerThread(java.util.TimerThread) mainLoop方法中
............
............
task.state = TimerTask.EXECUTED;
............
............
...全文
592 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zmm047 2006-05-26
  • 打赏
  • 举报
回复
继承自 TimerTask的子类也不能访问state属性呀
xxedge 2006-05-26
  • 打赏
  • 举报
回复
新建一个类 extends timertask,
需要使用的时候就创建一个新的对象怎么样?
zmm048 2006-05-26
  • 打赏
  • 举报
回复
顶一下
zmm047 2006-05-25
  • 打赏
  • 举报
回复
在第一次设定的时候并不知道第二次要什么时间执行阿
timer.schedule(timerTask ,m); //此时并不只道此任务何时还需要再执行

//经过一些检查之后 发现还需要执行一次timerTask

timer.schedule(timerTask ,m); //这个地方怎么做才能不报异常?
怎么做到//timerTask.state = TimerTask.VIRGIN

//下面的代码中可能还有需要执行timerTask的地方
//

kingofworl 2006-05-25
  • 打赏
  • 举报
回复
用第三个参数
timer.scheduleAtFixedRate(new RemindTask(), time,24*60*60*1000);
这里24*60*60*1000 表示一天后再次执行


yyjzsl 2006-05-25
  • 打赏
  • 举报
回复
路过,顶下

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧