定期执行java程序

Gon*_*ecs 3 java multithreading threadpool runnable

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

Jor*_*lla 5

您有两种选择:

QUARTZ CRONTRIGGER
检查Quartz Scheduler文档.(在这里你会找到一个设计模式doc)

在执行00:00,6:00,12:0018:00时间:

0 0 0/6/12/18 * * ?
Run Code Online (Sandbox Code Playgroud)

每5分钟执行一次

0 0/5 * * * ?   
Run Code Online (Sandbox Code Playgroud)

TIMER
定义一个线程,检查每个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);
Run Code Online (Sandbox Code Playgroud)

DELAY QUEUE
我没有使用DelayQueue的经验,但你可以在这里找到OldCurmudgeon示例, Jenkov也有一个教程,你可以在这里这里找到更多的例子.

  • 您还可以使用[DelayQueue](http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/DelayQueue.html). (2认同)
  • 抱歉延迟 - 我遇到了一些麻烦 - 请参阅[这里](http://stackoverflow.com/q/32206562/823393)获取示例"DelayQueue". (2认同)