如何在每个特定的时间间隔在后台运行Java程序?

时间:2016-08-02 14:20:52

标签: java server raspberry-pi raspbian

我在Raspberry Pi上编写了一个简单的java代码,它将数据从raspberry Pi发送到服务器。现在不是手动运行程序,而是希望程序在后台自动执行每10(任何特定时间)秒,因此新数据会在这段时间后发送到服务器。 Raspberry Pi正在Raspbian OS上运行。 有人可以帮我解决这个问题吗?先谢谢你..

4 个答案:

答案 0 :(得分:1)

您有两种选择:定期从cron或类似的方式运行您的作业,或将您的应用程序更改为长时间运行的进程,该进程将作为您设备上的服务运行,并将执行自己的计划。像Quartz(http://www.quartz-scheduler.org/)这样的库可以用来做后者。在启动作业(JVM的初始化和拆除)时,长时间运行作业的轻微优势可能会受到较小的惩罚。

答案 1 :(得分:1)

您可以使用java.util.Timer代替您的应用Thread

Timer timer = new Timer();
timer.schedule(new TimerTask() {
    @Override
    public void run() {
        //write your code here
        System.out.print(new Date() + "\n");
    }
}, 0, 1000);

我认为这是解决问题的最简单方法。

答案 2 :(得分:0)

您可以使用Thread在特定时间点执行代码。

示例:

Thread thread = new Thread(new Runnable(){

        @Override
        public void run() {
            while(true){
                try{
                    //your code
                    Thread.sleep(10*1000);//this is poll interval
                }catch(InterruptedException e){
                    e.printStackTrace();
                }
            }

        }

});
thread.setDaemon(true);
thread.start();

答案 3 :(得分:0)

我找到了答案。 使用crontab可以在特定的时间间隔执行任务。 对于java文件,你必须创建一个jar文件,然后如果你想在每一分钟后运行,那么crontab的语法是

  
      
    •   
      •   
        •   
          •   
          • java -jar /path_of_your_jar_file/File_name.jar
          •   
        •   
      •   
    •   
  •   

但问题是你的任务每1分钟重复一次。因此,如果你想在10秒内完成它,那么你必须使用线程休眠。 线程睡眠代码是

Timer timer = new Timer();

timer.schedule(new TimerTask() { 

 @Override
 public void run() {

     method_name();

    }
},0,10000);