2016-08-02 10 views
0

ラズベリーパイからサーバにデータを送信しているラズベリーパイに簡単なJavaコードを書いていました。プログラムを手動で実行するのではなく、そのプログラムがバックグラウンドで自動的に10秒ごとに実行され、その時間が経過した後に新しいデータがサーバーに送信されるようにします。ラズベリーパイはRaspbian OSで動作しています。 これはどのようにすればいいですか?特定の時間間隔ごとにバックグラウンドでJavaプログラムを実行する方法は?

+1

で、これは[クーロン](https://www.raspberrypi.org/documentation/linux/usage/cron.md)のための作業ではありませんか? (無意味な意図はありません) –

+0

cronを使って単一のJavaプログラムを実行するには?実行するJavaプログラムのjarファイルを作成する必要がありますか? –

+0

使用しているOSについてもっと詳しくお知らせください – Xyaren

答えて

1

cronなどから定期的にジョブを実行するか、デバイス上のサービスとして実行される長期実行プロセスにアプリケーションを変更し、独自のスケジューリングを実行するという2つの選択肢があります。 Quartz(http://www.quartz-scheduler.org/)のようなライブラリを使用して後者を行うことができます。長時間実行されているジョブのわずかな利点は、ジョブを起動するとき(JVMの初期化とティアダウン)のペナルティを小さくすることができます。

+0

私はcronについてよく分かりません。どのように私はJavaファイルを実行するためにcronを使用できますか?私は単一のJavaのproramを持っているので、どこに追加すればよいですか? –

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(); 
1

あなたが代わりにあなたのアプリケーションのためのThreadjava.util.Timerを使用することができます。

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

私はそれがあなたの問題を解決する最も簡単な方法だと思います。

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); 
関連する問題