java 定时器 判断定时器内的内容是否执行完毕 ,执行完毕的还是按原来是时间定时更新,假如没有更新完毕,定时器的时间加大,当执行完毕重新开始按定时器之前的时间更新
3 回答
qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
我这么处理过,加个状态,正在运行就略过本次定时任务。
public class TestTimer extends TimerTask{
private boolean isRun = false;
private int icount = 0;//定时划分细一些(如10次才是真正的一个任务),略过后等待是接近完整的周期。不加这样的判断定时器触发时间是固定的;加上就是基本按上一次完成时来定间隔周期。
public void run() {
if(isRun) return;//正在运行,略过本次
if(++icount<10) return;//时间粒度是10
try {
icount = 0;
isRun = true;
runTask();
} catch (Exception e) {
e.printStackTrace();
}finally{
isRun = false;
}
}
private void runTask(){
//Task
}
}
添加回答
举报
0/150
提交
取消