【问题标题】:Executing java program periodically [duplicate]定期执行java程序[重复]
【发布时间】:2015-08-25 09:47:22
【问题描述】:

我是编程新手,我只有 Java 的基本概念。我需要一个学校项目的解决方案,用于定期执行 Java 程序(类)(假设每 6 小时一次)并从中收集数据。 Java 程序是一个客户端,它每 5 分钟收集一次服务器发布的消息。为了解决这个问题,我的第一个想法是Thread()Runnable(),但就像我说的,我只有 Java 的基本概念,我不知道该怎么做。解决方案也必须使用 Java。如果有人有任何想法,非常感谢帮助,谢谢 PS对不起我的英语不好......

【问题讨论】:

  • 您可以使用调度库,例如quartz
  • @dotvav 根据他项目的复杂性,石英可能是一种矫枉过正。他可以先看看更简单的解决方案。
  • @Swapnil 该评论作为一种纯粹的反射出来了。小型项目/任务可能会使用更简单的方法。
  • 感谢您的帮助,我会尝试解决方案然后更新

标签: java multithreading threadpool runnable


【解决方案1】:

你有两个选择:

石英计时码表
检查Quartz Scheduler 文档。 (Here you will find contrigger pattern doc)

00:006:0012:0018:00 小时执行:

0 0 0/6/12/18 * * ?

每 5 分钟执行一次

0 0/5 * * * ?   

定时器
定义一个线程,每 x 次检查一次以启动进程:

int SIX_HOURS = 1000 * 60 * 60 * 6;
Timer timer = new Timer(); 
timer.schedule( new TimerTask() 
{ 
    public void run() { 
    // do your work 
    } 
}, 0, SIX_HOURS);

延迟队列
我没有使用DelayQueue 的经验,但是你可以找到OldCurmudgeon 的例子placed hereJenkov 也有一个tutorial here,你可以找到更多的例子herehere

【讨论】:

  • 您也可以使用DelayQueue
  • @OldCurmudgeon 更新了更多信息,您知道其他一些好的教程或DelayQueue 的示例吗?
  • 抱歉耽搁了 - 我遇到了一些麻烦 - 请参阅 here 以获取示例 DelayQueue
  • 嗨@Gon,这是您的第一个问题,如果这个或任何答案解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
猜你喜欢
  • 2017-07-31
  • 2013-02-28
  • 2022-01-22
  • 1970-01-01
  • 2020-05-08
  • 2017-01-12
  • 1970-01-01
  • 2023-03-16
相关资源
最近更新 更多