【问题标题】:How to change the delay of a Timer for every time it runs?如何更改 Timer 每次运行时的延迟?
【发布时间】:2015-05-25 07:07:00
【问题描述】:

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

必须发生的事情:

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

【问题讨论】:

标签: java timer runtime delay


【解决方案1】:

尝试添加一些代码!

您需要检查计时器是否有 5 秒使其变为 10 等等。

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

这是一些想法的代码,不知道它在你的项目中看起来如何。

【讨论】:

    【解决方案2】:

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

    第一种方法:

    就像说我想展示图片 1000 秒。所以我会执行for循环直到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. 在您希望定期执行的公共 void run() 方法中编写代码。

    代码示例:

      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
    
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多