【问题标题】:Java timer code execute JARJava定时器代码执行JAR
【发布时间】:2018-05-23 06:30:53
【问题描述】:

有什么好办法,就用类库来实现...

我想要一个 java 程序有一个时间列表 [8.47am, 8.49am, 9pm..] 并且当每个时间到达时,运行一些代码(启动单独的 JAR)。我可以试一试,但想要一些指导,例如用于计时器的最佳课程。也许有些是阻塞/非阻塞的。

谢谢。

【问题讨论】:

标签: java multithreading timer


【解决方案1】:

我们可以通过使用内部实现可运行接口的 TimerTask 类来做到这一点。 声明一个arrayList并将所需的时间插入其中,方法调用将相应地安排。

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;


//The task which you want to execute
class MyTimeTask extends TimerTask
{
    public void run()
    {
        System.out.println("DO some task");
    }

public static void main(String[] args) throws ParseException {

    //the Date and time at which you want to execute
    DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm a");
    Date date = dateFormatter.parse("2018-05-23 12:43 am");
    Date date1 = dateFormatter.parse("2018-05-23 12:43 pm");
    ArrayList<Date> d=new ArrayList<>();
    d.add(date);
    d.add(date1);
    //Now create the time and schedule it
    Timer timer = new Timer();
    //Use this if you want to execute it once
   for(Date dd:d){
       timer.schedule(new MyTimeTask(),dd);
    }

    //Use this if you want to execute it repeatedly
    //int period = 10000;//10secs
    //timer.schedule(new MyTimeTask(), date, period );
 }
}

【讨论】:

    【解决方案2】:

    如果你想要持久的计时器,并且有可能触发错过的计时器,你应该考虑 Quartz 库: http://www.quartz-scheduler.org

    否则,您的操作系统已经支持您想要执行的操作。在 Windows 中,您可以使用任务计划程序。在 linux 和 Mac 中,您可以使用 CRON。

    cron 示例:

    # Run at exactly 8:47 am
    47 8 * * * java -jar first_app.jar
    
    # Run at exactly 9 pm
    0 21 * * * java -jar second_app.jar
    
    # Run every 15 minutes
    */15 * * * * java -jar third_app.jar
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      • 2014-03-30
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-11
      相关资源
      最近更新 更多