1

我正在实现一个计时器:

timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    //Do something;
                }
            },1000,1000);

但是,我想有一个超时,以便在假设 100 次尝试/10 秒后,计时器会自动停止。

谢谢。

4

4 回答 4

3

尝试

    final Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        int n = 0;
        @Override
        public void run() {
            System.out.println(n);
            if (++n == 5) {
                timer.cancel();
            }
        }
    },1000,1000);
于 2013-03-25T11:00:09.583 回答
1

您可以简单地在 run 方法之外有一个变量来保持迭代计数。在方法中创建一条if语句run(),当计时器达到所需数量时取消计时器。每次run()执行该方法时将变量加一。

于 2013-03-25T10:34:57.373 回答
0

我认为我们在 Timer 类中没有用于此的 java API。您需要通过根据您的要求实现一些自定义逻辑以编程方式进行。

于 2013-03-25T10:40:08.273 回答
0

启动另一个定时器,一旦上述定时器启动,10秒后取消上述定时器。检查下面的代码作为快速解决方案。但最好你取消任务()而不是计时器。

timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    timer2.schedule(new TimerTask() {
                    @Override
                    public void run() {
                        timer1.cancel();
                    }
            },0);
                    //Do something;
                }
            },1000,1000);

timer2 = new Timer();
于 2013-03-25T10:35:18.143 回答