定期执行Java程序

3

我是编程的新手,对Java只有基本概念。为了完成一个学校项目,我需要一个解决方案来定期执行一个Java程序(类),比如说每隔6小时执行一次,并从中收集数据。这个Java程序是一个客户端,每5分钟接收一次服务器发布的消息。为了解决这个问题,我最初想到使用 Thread()Runnable(),但像我之前提到的,我只有Java的基本概念,不知道该怎么做。解决方案也必须是Java语言的。如果有人有任何想法,非常感谢您的帮助,谢谢。


你可以使用类似于 quartz 的调度库。 - dotvav
2
链接 链接 - 2787184
@dotvav 根据他的项目复杂度,Quartz 可能有些过头了。他可以先看看更简单的解决方案。 - Swapnil
@Swapnil,那个评论是出于本能的反应。小项目/作业可能会使用更简单的方法。 - dotvav
感谢您的帮助,我会尝试这些解决方案然后更新。 - Gon Freecs
1个回答

5
你有两个选择:

QUARTZ CRONTRIGGER
请参阅这里的 contrigger 模式文档,查看 Quartz Scheduler 文档。

定于每天早上 00:006:0012:00 和下午 18: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的示例这里找到,同时Jenkov有一个教程,您还可以在这里这里找到更多示例。


2
你也可以使用 DelayQueue - OldCurmudgeon
@OldCurmudgeon更新了更多信息,你知道其他好的DelayQueue教程或示例吗? - Jordi Castilla
2
抱歉耽搁了 - 我遇到了一些问题 - 请参考这里查看示例 DelayQueue - OldCurmudgeon
嗨,@Gon。因為這是你的第一個問題,如果這個或任何答案解決了你的問題,請考慮通過點擊檢查標記來接受它。這表明您已找到解決方案,並為回答者和自己贏得了一些聲譽。沒有義務這樣做。 - Jordi Castilla

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接