我想每秒执行一次方法20次。
实际上我有计时器
Timer timer = new Timer();
int begin = 0;
int timeInterval = 1000;
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
//call the method
}
}, begin, timeInterval);
如何在此间隔内调用方法20次?
答案 0 :(得分:7)
使用timer.schedule()
,并使用timer.cancel()
跟踪计时器执行了多少次,并在20次后停止计时器。
计划指定的任务以重复执行固定延迟, 在指定的延迟后开始。随后执行死刑 以大约固定的时间间隔,以指定的时间间隔分隔。
在固定延迟执行中,相对于 上一次执行的实际执行时间。如果执行是 由于任何原因(例如垃圾收集或其他背景)而延迟 活动),后续执行也会被延迟。在长 运行时,执行频率通常会略低于 指定周期的倒数(假设系统时钟为 底层的Object.wait(long)是正确的)。
固定延迟执行适用于经常性活动 要求“光滑”。换句话说,它适合活动 在短时间内保持频率更重要的地方 比长远来看。这包括大多数动画任务,例如 定期使光标闪烁。它还包括以下任务: 响应人类的输入执行常规活动,例如 只要按住键,就会自动重复一个字符。
参数:
task - task to be scheduled. delay - delay in milliseconds before task is to be executed. period - time in milliseconds between successive task executions.
Timer timer = new Timer();
int begin = 0;
int timeInterval = 1000;
timer.schedule(new TimerTask() {
int counter = 0;
@Override
public void run() {
//call the method
counter++;
if (counter >= 20){
timer.cancel();
}
}
}, begin, timeInterval);
答案 1 :(得分:1)
尝试执行器服务。您必须自己计算一下,您多久调用一次Callable并取消Timer。
如果它不符合您的要求,则可以遵循以下主题: