2012-10-17 10 views
6

私はそれが実行の間、1分遅れで実行されます。このスケジュール実行の余分な実行を強制できますか?

Runnable periodic = new Runnable() { ... } 

ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); 
executor.scheduleWithFixedDelay(periodic, 1, 1, TimeUnit.MINUTES); 

のようなscheduledFixedDelayでのRunnableを供給していますsingleThreadExecutorを持っています。問題は、時には "オンデマンドで"実行する必要があることです。それは可能ですか?

私はRunnableを実行して実行を再開しようと考えましたが、本当に好きなのはRunnableを実行して1分後に再実行するように再スケジュールした単純なメソッドです。

答えて

4

タスクを実行したい場合は、あなたが

executor.submit(periodic); 

または遅延

executor.schedule(periodic, delay, units); 
+0

でそれを追加し、それを提出することができます。しかし、エグゼキュータは既にこのどちらかRunnableを実行するか、その後どうなるか予定されている場合? –

+0

あなたはそれを実行するように頼まれた両方の時間に実行されます。 –

+2

正確には私が望んでいたわけではありませんが、私はこの答えを承認しました。計画されていたときではなく*計画された実行を本当にしたいのですが、singleThreadScheduledExecutorを使っているので、新しい一度だけの仕事として定期的に追加することもできます。 –

関連する問題