Java定时器每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()停止计时器 大概是这

我希望Java定时器在每t秒调用函数n次。我现在正在尝试这个函数,它每t秒调用一次函数,但我希望这个函数只被调用n次

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修复了这个例子:)如果答案正确,并且展示了所有涉及的技巧,那么它毕竟是一个更有用的答案。