【问题标题】:java set a timer - daily morning and evening [closed]java设置计时器 - 每天早上和晚上[关闭]
【发布时间】:2013-04-11 04:20:33
【问题描述】:

我需要在每天早上 8 点和晚上 8 点运行一个方法,因为这种想法与 Java 计时器有关。如何为这种情况设置计时器。

【问题讨论】:

    标签: java timer intervals


    【解决方案1】:

    使用 Timer 类。

        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, 8);
        Timer timer = new Timer();
        timer.schedule(new RemindTask(), calendar.getTime());
    
        class RemindTask extends TimerTask {
    
           public void run() {
           } 
        }
    

    在类似的行中,您也可以为晚上时间创建另一个计时器。另一种选择是使用单一计时器,开始时间是早上 8 点,间隔时间是 12 小时。

    您还可以使用其他库进行调度,例如 Quartz Scheduler

    【讨论】:

      【解决方案2】:

      有很多库可以满足您的需求,以 cron4j 为例。

      【讨论】:

        【解决方案3】:

        您可以使用如下函数定期检查时间:

        import java.text.SimpleDateFormat;
        import java.util.Calendar;
        
        public class currentTime {
        
            public static void main(String[] args) {
                Calendar cal = Calendar.getInstance();
                cal.getTime();
                SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
                System.out.println( sdf.format(cal.getTime()) );
            }
        
        }
        

        所以有一个计数器并每隔 x 次迭代运行一次。

        【讨论】:

          【解决方案4】:

          您可以安排 TimerTask 在每小时的顶部运行,并在日历的帮助下检查它是否为 8

              long hour = 3600 * 1000;
              new Timer().scheduleAtFixedRate(new TimerTask() {
                  public void run() {
                      if (Calendar.getInstance().get(Calendar.HOUR) == 8) {
                          // run
                      }
                  }
              }, new Date(System.currentTimeMillis() / hour * hour), hour);
          

          即使切换到夏令时,它也会在 8 点运行

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2018-01-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-11-25
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多