当前位置: 首页 > 面试题库 >

每天在设定的时间运行Java方法

施彬郁
2023-03-14
问题内容

我是Java的新手,我已经开始从事一个项目。但是,我遇到了一个障碍。我需要一种在一天中的特定时间运行的方法。我已经做了很多搜索,但是找不到任何可以解决问题的方法。我遇到了Timer类,但它似乎以一定的间隔运行。Scheduler类似乎也有同样的问题。我也遇到过Quartz,但是我认为我需要更轻巧的东西,而且只能隔一段时间看一下如何做。

也许只是因为我是新手,所以我错过了一些可以在这些课程中帮助我的事情,但是我真的很受困扰,可以使用一些帮助。

如果有人可以将我指向某个班级,该班级将在一天的某个特定时间每天运行(可以取消活动的奖励积分),并向我展示如何正确使用该班级,那就太好了!

TL; DR:需要一个类,该类在一天的某个时间执行某项操作,而不是每隔一段时间执行一次,因为该程序可能在一天内会多次重新启动。


问题答案:

尝试TimerTask类

有关更多信息,请访问
http://oreilly.com/java/archive/quartz.html

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class ReportGenerator extends TimerTask {

  public void run() {
    System.out.println("Generating report");
    //TODO generate report
  }

}

class MainApplication {

  public static void main(String[] args) {
    Timer timer = new Timer();
    Calendar date = Calendar.getInstance();
    date.set(
      Calendar.DAY_OF_WEEK,
      Calendar.SUNDAY
    );
    date.set(Calendar.HOUR, 0);
    date.set(Calendar.MINUTE, 0);
    date.set(Calendar.SECOND, 0);
    date.set(Calendar.MILLISECOND, 0);
    // Schedule to run every Sunday in midnight
    timer.schedule(
      new ReportGenerator(),
      date.getTime(),
      1000 * 60 * 60 * 24 * 7
    );
  }//Main method ends
}//MainApplication ends


 类似资料:
  • 我正在寻找一种方法,在kubernetes上部署一个pod,每天运行几个小时。本质上,我希望它每天早上8点运行,并继续运行到下午5:30左右。 我已经研究了很多,还没有找到一种在考虑特定时间框架的情况下部署pod的方法。我找到了cron作业,但这似乎是为了终止自己的pod,而我的应该不断运行。 有没有办法以这种方式在kubernetes上部署我的pod?还是我应该设置pod本身以根据其内部时钟运行

  • 现在我每天下午3点运行我的cron作业 但是我想一天运行两次cron作业。上午10点30分和下午2点30分 我相信此命令将在上午 10:30 运行。我应该如何在下午 2:30 运行它?

  • 如何将Airflow dag配置为每天在指定时间执行,无论发生什么,就像crons一样。 我知道使用 TimeSensor 可以获得类似的行为,但在这种情况下,这取决于传感器任务,并且可能与 dag 执行时间冲突。 示例:对于传感器方法,如果我让传感器在0小时15分钟运行,但如果dag在稍后执行,则我的任务会延迟,因此即使对于传感器方法,我也需要确保Dag在正确的时间执行。 那么如何确保Dag在指

  • 我在使用discord。py创建一个discord机器人,我需要每天在特定的时间执行某些操作。我看到了这个答案:如何在不和谐中循环。py重写?到目前为止,我一直在使用它。 当我在heroku免费计划上托管我的机器人时,问题就开始了。Heroku上的服务器每天至少重置一次,这会弄乱计时器,如该帖子所示。 我还看到了日程库。这个的问题是它似乎使用了一个无限循环。这不会阻止我在24小时内运行其他任何东西

  • 问题内容: 我想每天早上5点执行某项任务。因此,我决定使用它,但到目前为止,我已经看到了一些示例,这些示例显示了如何每隔几分钟运行一次任务。 而且我找不到任何示例来说明如何每天在特定时间(上午5点)每天运行任务,并且还考虑了夏时制的事实- 以下是我的代码,每15分钟运行一次- 有什么办法,我可以考虑兼顾夏时制的事实,安排一个任务在每天的凌晨5点运行? 而且对于这个还是更好? 问题答案: 与当前的J

  • 问题内容: 我有一个返回String的方法,是否有可能在一段时间后超出该阈值以返回该特定字符串? 问题答案: 该番石榴库有一个非常好的,可以让你做到这一点,就会向由接口定义的任何方法。它可以为具有“内置”超时的对象生成代理。