定时任务(TimeTask如何延期执行)

zaihuilvcha
  • 65

定义一个定时任务timerTask,将其提交到一个timer中,设定5分钟后执行该任务。现有需求如下:
定时任务的目的是执行一个业务操作,但此操作的执行前提是通过一个状态判定:假设这个判定叫flag,当flag=1的时候,可以执行那个业务操作,但是当flag=0,那么这个定时任务需要再延期一段时间(一段时间后,再次执行判定和业务操作)
timerTask的run方法里,写这个判定……
判定flag=1时,直接按预期计划执行这个定时任务中的业务逻辑,但当flag=0时,如何延期执行这个定时任务呢?
我之前直接用sleep方法,但这样会让这个线程处于等待状态,十分不妙(在大并发情况下,线程资源不能被这样浪费掉)。我的想法是,将这次的定时任务先取消掉,再把该定时任务扔到另一个timer中去定时,不知这样可否?
求助求助哇

回复
阅读 1.9k
1 个回答
镜花水月
  • 3
新手上路,请多包涵
import java.util.*;  

public class test {  
public static void main(String[] args) {  
    Timer timer = new Timer();// 实例化Timer类  
    timer.schedule(new TimerTask() {  
        public void run() {  
            System.out.println("退出");  
            this.cancel();  
        }  
    }, 5000);// 这里百毫秒  
    System.out.println("本程序存在5秒后自动退出");  
}  
} 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏