如何在每次运行时更改Timer的延迟?

时间:2015-05-22 07:06:22

标签: java timer runtime delay

现在我有一个延迟5秒的计时器,但是在运行一次后我需要一个不同的延迟。 我正在浏览一些照片,在第一轮中它应该显示它们5秒钟。之后它应该显示10个seonds。如何在运行期间更改定时器的延迟?

发生了什么:

  • 启动计时器
  • 运行5秒
  • 更改延迟
  • 运行10秒

2 个答案:

答案 0 :(得分:0)

尝试添加一些代码!

您需要检查计时器是否有5秒钟使其成为10,依此类推。

int delayTime = 5;
//run first delay
if (delayTime == 5){
delayTime = 10;
}

这是该想法的一些代码,不知道它在您的项目中的外观。

答案 1 :(得分:0)

您的用例可以有两种方法:

第一种方法:

就像说我想要将照片显示1000秒。所以我会执行循环直到1000秒;或者如果你想无限地运行它,那么你可以改变for循环中的条件。下面的代码将在每5秒延迟后执行for循环。

int delayTimeInMiliSec;
    for(int delayTime = 5 ; delayTime<=1000; delayTime = delayTime+5){
        delayTimeInMiliSec = delayTime * 1000;
        // here Call your method that shows pictures
        Thread.sleep(delayTimeInMiliSec);
    }

第二种方法:

  1. 创建一个扩展TimerTask的类(在java.util包中可用)。 TimerTask是一个抽象类。
  2. 将您的代码写入要定期执行的public void run()方法中。
  3. 代码示例:

      import java.util.TimerTask;
    
        // Create a class extends with TimerTask
        public class ScheduledTask extends TimerTask {
    
            // Add your task here
            @Override
            public void run() {
                //show pictures code
            }
        }
    
    import java.util.Timer;
    
    public class SchedulerMain {
        public static void main(String args[]) throws InterruptedException {
    
            Timer time = new Timer(); // Instantiate Timer Object
            ScheduledTask st = new ScheduledTask(); // Instantiate SheduledTask class
            time.schedule(st, 0, 5000); // Create Repetitively task for every 5 secs
    
    
        }
    }