注册 登录
编程论坛 JAVA论坛

Java的Timer中,如何取消多个定时任务

taotesea 发布于 2017-11-27 13:16, 2325 次点击
例如:
for(int i = 0; i < 100; i++) {
 timer.schedule(new TimerTask() {  
   ......
 }
}
请问各位大侠,我该如何取消这100个计划时再重新在添加100个定时任务,谢谢了:)
3 回复
#2
林月儿2017-11-27 22:50
抛个异常捕获吧,虽然有点偏门。
#3
zhizai2017-11-29 10:28
我感觉, 你可以在循环外面设定一个标记,例如:boolean it=true; 然后在做一个判断if(it){Timer....}, 如果想取消这个循环,那就让it=false,就可以了
#4
calix2017-12-02 10:43
private static volatile boolean cancel = false;
执行前判断下
@Override
public void run() {
    if (cancel) {
        this.cancel();
        return;
    }
    ....
}
如果想一个个单独取消,可以吧TimerTask放到Map中,用过指定的key找到并cancel,比如:
private static final Map<String, TimerTask> TIME_TASKS = new HashMap<>(100);
1