java.util.Timer,创建多个任务如何管理
用java.util.Timer写了一个创建定时任务的类,每执行一次会创建一个定时任务,创建多个任务如何管理多次执行会创建多个定时任务,执行都没问题。问题是创建出多个定时...
用java.util.Timer写了一个创建定时任务的类,每执行一次会创建一个定时任务,创建多个任务如何管理
多次执行会创建多个定时任务,执行都没问题。
问题是创建出多个定时任务,怎么管理,我想取消其中的一个,怎么做?
public class CreateTaskAction extends BaseAction implements ServletRequestAware{
//省略N行
public static Timer timer;
//省略N行
public String execute() throws Exception {
//省略N行
// 定时执行任务
timer = new Timer();
timer.schedule(new TimingTask("参数略"), 时间略);
//省略N行
}
// 定时任务
private class TimingTask extends TimerTask {
//省略N行
}
} 展开
多次执行会创建多个定时任务,执行都没问题。
问题是创建出多个定时任务,怎么管理,我想取消其中的一个,怎么做?
public class CreateTaskAction extends BaseAction implements ServletRequestAware{
//省略N行
public static Timer timer;
//省略N行
public String execute() throws Exception {
//省略N行
// 定时执行任务
timer = new Timer();
timer.schedule(new TimingTask("参数略"), 时间略);
//省略N行
}
// 定时任务
private class TimingTask extends TimerTask {
//省略N行
}
} 展开
2个回答
展开全部
你该把各个TimingTask的实例对象管理起来,而不是用匿名类对象吧
TimingTask tasks[]=new TimingTask[2];
tasks[0]=new TimingTask(){
run(){ 动作1 }
};
tasks[1]=new TimingTask(){
run(){ 动作2 }
};
tasks[0].cancel(); //取消动作一
当然也可以把数组[]改成List,便于动态添加和删除
TimingTask tasks[]=new TimingTask[2];
tasks[0]=new TimingTask(){
run(){ 动作1 }
};
tasks[1]=new TimingTask(){
run(){ 动作2 }
};
tasks[0].cancel(); //取消动作一
当然也可以把数组[]改成List,便于动态添加和删除
更多追问追答
追问
每次创建定时任务就会new一个Timer和new一个TimingTask(继承TimerTask),2个对象都有.cancel()方法,取消这次定时是用new TimingTask("参数略")的.cancel()方法吗
追答
Timer.cancel()取消的是该Timer上所有的任务 ,Task.cancel()取消的自己一个任务
一个Timer可以支持n个Task。
有多个任务用一个timer就可以。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |