【问题标题】:How to Run Java program in Background at every specific interval of time? [duplicate]如何在每个特定的时间间隔在后台运行 Java 程序? [复制]
【发布时间】:2016-08-02 14:20:51
【问题描述】:

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

【问题讨论】:

  • 这不是cron的任务吗? (没有双关语)
  • 如何使用cron运行单个java程序?还是我必须制作该 java 程序的 jar 文件才能执行?
  • 请提供有关您正在使用的操作系统等的更多信息。

标签: java server raspberry-pi raspbian


【解决方案1】:

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

【讨论】:

  • 我对 cron 了解不多。如何使用 cron 运行 java 文件?我有一个 java proram,那么我应该在哪里添加呢?
【解决方案2】:

您可以将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);

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

【讨论】:

    【解决方案3】:

    您可以使用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();
    

    【讨论】:

      【解决方案4】:

      我找到了答案。 使用 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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-06
        • 2013-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-03
        相关资源
        最近更新 更多