2012-01-26 22 views

答えて

4

java.util.Timerを見てください。

あなたはまた、はるかに強力である。ここで春 と組み合わせ で使用することができクォーツは、ここexample

であると考えることができ、使用here

の例は私の同等が使用している見つけることができますコードのjava.util.Timerは、あなたが

package perso.tests.timer; 

import java.util.Timer; 
import java.util.TimerTask; 

public class TimerExample extends TimerTask{ 

     Timer timer; 
     int executionsPerSecond; 

     public TimerExample(int executionsPerSecond){ 
      this.executionsPerSecond = executionsPerSecond; 
     timer = new Timer(); 
     long period = 1000/executionsPerSecond; 
     timer.schedule(this, 200, period); 
     } 

     public void functionToRepeat(){ 
      System.out.println(executionsPerSecond); 
     } 
     public void run() { 
      functionToRepeat(); 
     } 
     public static void main(String args[]) { 
     System.out.println("About to schedule task."); 
     new TimerExample(3); 
     new TimerExample(6); 
     new TimerExample(9); 
     System.out.println("Tasks scheduled."); 
     } 
} 
+0

TimerクラスとQuartzライブラリの両方は、特定の時間にジョブをスケジュールするか、N時間単位ごとに実行するcronのようなインターフェイスを提供しています。私が必要とするのは、特定のレートを達成するためにタスクをスケジュールするスケジューラです。時間単位ごとにN個の関数(メソッド)呼び出し。スニペットのように@Tichodroma – dkart

+0

@ dkartを投稿しました。私の答えでわかるように、あなたが期待している振る舞いを持つアプリケーションを作成するのは簡単です...何かを見逃していない限り、 –

+0

たくさんの@C.Champagne私はこれが私が必要とするものだと思います! – dkart

5

http://quartz-scheduler.org/

クォーツは、事実上すべてのJava EEまたはJava SEアプリケーションと統合することができるフル機能を備えた、オープンソースのジョブスケジューリングサービスである、または側面に沿って使用を見てみましょう - 最小のスタンドから最大規模の電子商取引システムへの単独アプリケーションの導入

2

を見つけることができます。

Pythonのスニペットとほぼ同等のJavaコードは次のようになります。

  • が返さ将来をどうするかを決定するコールバックインタフェースを定義します。

    private final ScheduledExecutorService scheduler = 
         Executors.newScheduledThreadPool(1); 
    
    public ScheduledFuture<?> newTimedCall(int callsPerSecond, 
        Callback<T> callback, T argument) { 
        int period = (1000/callsPerSecond); 
        return 
         scheduler.scheduleAtFixedRate(new Runnable() { 
          public void run() { 
           callback.on(argument); 
          } 
         }, 0, period, TimeUnit.MILLISECONDS); 
    } 
    

    演習は読者に任せます

  • 実行者をシャットダウンすることを忘れないでください。
+0

+1恐らく最良の解決策です。面白いことに、Javaの抜粋はPythonに相当するものではありません。 – helpermethod

+0

ありがとう! –

1

方法についてjava.util.Timerをmentionnedスニペット? this related answerを参照してください。

関連する問題