Java定时器每t秒调用函数n次
我希望Java定时器在每t秒调用函数n次。我现在正在尝试这个函数,它每t秒调用一次函数,但我希望这个函数只被调用n次Java定时器每t秒调用函数n次,java,timer,Java,Timer,我希望Java定时器在每t秒调用函数n次。我现在正在尝试这个函数,它每t秒调用一次函数,但我希望这个函数只被调用n次 Timer tt = new Timer(); tt.schedule(new MyTimer(url), t); 试试这项服务。你必须计算你自己,你呼叫可呼叫电话的频率并取消计时器。试试这项服务。你必须计算你自己,你多久调用一次Callable并取消计时器。我认为计时器没有内置功能。您需要添加一个计数器对每次呼叫进行计数,然后在n次之后使用cancel()停止计时器 大概是这
Timer tt = new Timer();
tt.schedule(new MyTimer(url), t);
试试这项服务。你必须计算你自己,你呼叫可呼叫电话的频率并取消计时器。试试这项服务。你必须计算你自己,你多久调用一次Callable并取消计时器。我认为
计时器
没有内置功能。您需要添加一个计数器对每次呼叫进行计数,然后在n次之后使用cancel()
停止计时器
大概是这样的:
final int[] counter = {n};
final Timer tt = new Timer();
tt.schedule(new TimerTask(){
public void run() {
//your job
counter[0]--;
if (counter[0] == 0) {
tt.cancel();
}
}
}, t);
我认为
Timer
没有内置的功能。您需要添加一个计数器对每次呼叫进行计数,然后在n次之后使用cancel()
停止计时器
大概是这样的:
final int[] counter = {n};
final Timer tt = new Timer();
tt.schedule(new TimerTask(){
public void run() {
//your job
counter[0]--;
if (counter[0] == 0) {
tt.cancel();
}
}
}, t);
您正在递减
n
,然后检查计数器
?你认为这会怎样?您需要final int[]counter={n}
然后counter[0]-
然后if(counter[0]==0)
。最好将Timer
作为长时间运行的对象,并向其提交新的TimerTask
s(并取消TimerTask
s)。递减n
是一个输入错误。感谢您指出这一点,并立即修复。关于应该取消定时器
或定时器任务
,我认为这取决于程序要求。如果程序应在n个作业之后立即存在,则应取消计时器。如果程序将持续运行并且计时器
将被重用,则取消计时器任务
是完全正确的。为什么计数器应该是数组tho?您是否尝试编译该代码?现在,您正试图减少一个最终变量。您无法关闭非最终局部变量,因此我向您展示了绕过该问题的标准技巧。我并没有真正编写它。我只是想表达一个想法。关于最后的var减量,您是正确的,我刚刚在上面的示例中修复了这个问题+请发表评论。谢谢。+1修正了这个例子:)如果答案正确,并且显示了所有涉及的技巧,那么它毕竟是一个更有用的答案。您正在递减n
,然后检查计数器
?你认为这会怎样?您需要final int[]counter={n}
然后counter[0]-
然后if(counter[0]==0)
。最好将Timer
作为长时间运行的对象,并向其提交新的TimerTask
s(并取消TimerTask
s)。递减n
是一个输入错误。感谢您指出这一点,并立即修复。关于应该取消定时器
或定时器任务
,我认为这取决于程序要求。如果程序应在n个作业之后立即存在,则应取消计时器。如果程序将持续运行并且计时器
将被重用,则取消计时器任务
是完全正确的。为什么计数器应该是数组tho?您是否尝试编译该代码?现在,您正试图减少一个最终变量。您无法关闭非最终局部变量,因此我向您展示了绕过该问题的标准技巧。我并没有真正编写它。我只是想表达一个想法。关于最后的var减量,您是正确的,我刚刚在上面的示例中修复了这个问题+请发表评论。谢谢。+1修复了这个例子:)如果答案正确,并且展示了所有涉及的技巧,那么它毕竟是一个更有用的答案。