java - 定期执行java程序

标签 java multithreading threadpool runnable

<分区>

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

最佳答案

你有两个选择:

quartz CRONTRIGGER
检查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 here , 还有 Jenkov有一个tutorial here ,您可以找到更多示例 herehere .

关于java - 定期执行java程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32200718/

相关文章:

c# - 优化用于发送 HTTP 请求的 Windows 服务

C++ 创建线程池(类似 java)

java - apache http 客户端请求重定向

java - 计算字母数字字符的出现次数并以图形方式打印它们

Java:获得一次锁更好还是多次获得锁更好?

java - JPL 库在多线程程序中的意外行为(Java 和 Prolog 的接口(interface))

java - 设置 Cassandra 代码格式化程序,options/code.style.schemes.xml 的用途是什么?

java - Hamcrest 匹配器在字符串列表中没有重复项?

java - 如何知道 ScheduledExecutorService 何时完成

java - 按顺序执行任务但从池中获取线程的 ExecutorService