デュディ:
私はこの方法を20回のための毎秒を実行したいです。
実際に私は、タイマーを持っています
Timer timer = new Timer();
int begin = 0;
int timeInterval = 1000;
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
//call the method
}
}, begin, timeInterval);
どのように私はこの間隔で20回メソッドを呼び出すことができますか?
ダニエルB.:
使用timer.schedule()
、およびと、タイマーが実行された回数を追跡し、そして20時間後にタイマーを停止すると、timer.cancel()
スケジュール指定した遅延後に始まる繰り返し固定遅延実行のために指定されたタスク、。以降の実行は、指定された期間で区切られた約定期的に場所を取ります。
固定遅延実行では、各実行は、前の実行の実際の実行時間に対してスケジュールされます。実行が何らかの理由で遅れた場合(例えば、ガベージコレクションまたはその他のバックグラウンドアクティビティとして)、後続の実行がよくとして遅延されます。長期的には、実行頻度は、一般に、(はObject.waitを(長い)正確な基礎となるシステム・クロックを仮定して)指定された期間の逆数よりもわずかに低くなります。
固定遅延実行が必要と活動定期的に適切な「滑らかさを。」言い換えれば、長期的にはより短期的には、正確な周波数を維持することがより重要である活動に適しています。これは、一定の間隔でカーソルを点滅させるなど、ほとんどのアニメーションタスクが含まれています。それはまた、自動的に長いキーを押しているように、文字を繰り返すような規則的活性は、ヒトの入力に応答して実行されるタスクを含みます。
パラメーター:
task - task to be scheduled. delay - delay in milliseconds before task is to be executed. period - time in milliseconds between successive task executions.
例
Timer timer = new Timer();
int begin = 0;
int timeInterval = 1000;
timer.schedule(new TimerTask() {
int counter = 0;
@Override
public void run() {
//call the method
counter++;
if (counter >= 20){
timer.cancel();
}
}
}, begin, timeInterval);