循环内的定时器?

时间:2012-02-11 10:11:45

标签: java loops timer

我的程序要求以1000毫秒的时间间隔显示或输出循环内部的结果。 是否可以输入定时器代码:

 int delay2= 1000;
    final Timer timer2 = new Timer();
             timer2.schedule(new TimerTask(){
     public void run(){}

      },delay2, 1000);

在循环内打印答案:

 System.out.println("dec2       "+deck2[g]);
       System.out.println("dec1       "+deck1[g]);

在1000毫秒的时间间隔内?

感谢阅读。

编辑:这会有用吗?

final Timer timer2 = new Timer();
         timer2.schedule(new TimerTask(){
 public void run(){   
System.out.println("COUNT"+count);
for(int g = 0;g<e+1;g++)
 { 

   System.out.println("dec2       "+deck2[g]);
   System.out.println("dec1       "+deck1[g]);

}
} 
  },delay2, 1000);

EDIT2:或者这个?

long t = new Date().getTime(); // time now in millies
do {
    for( g = 0;g<e+1;g++)
    {
    final long now = new Date().getTime();
    if( now - t >= 1000 ) {
System.out.println("dec2       "+deck2[g]);
 System.out.println("dec1       "+deck1[g]);
       t = new Date().getTime();  // reset reference time
    }
}
 count--;   
} while( count==0 );

2 个答案:

答案 0 :(得分:1)

如果你不介意性能影响,你可以做这样的事情。

long t = new Date().getTime(); // time now in millies
do {
    // do something here
    // ...
    final long now = new Date().getTime();
    if( now - t >= 1000 ) {
       // do your logging
       // ...
       t = new Date().getTime();  // reset reference time
    }
} while( someCondition );

答案 1 :(得分:0)

没有。你可以制作'g'和实例变量,并在当时的run()方法中使用它来做你想要的。

类似的东西:

private int g = 0;

private startTimer()
{
    final Timer timer = new Timer();

    timer.schedule(new TimerTask(){
        public void run(){  
           g++;                 // Incrementing the counter.
           System.out.println("dec2       "+deck2[g]);
           System.out.println("dec1       "+deck1[g]);

           // Stop the timer when done.
           if (g >= e + 1) timer.cancel();
        }
    }, delay, 1000);
}