アプリケーションで定期的な操作を実行する必要があります。たとえば、 periodT
です。今のところ、私は使用してTimer.scheduleAtFixedRate(TimerTask, 0, T)
います。ここで、単一の操作の重複を避けたいと考えています (場合によっては、単一の操作に よりも時間がかかることがありますT
)。単一のスレッドを使用して操作を実行する実装を読んだTimer
ので、標準的な状況では重複はありません。TimerTask
問題は、私の場合、渡された toによって単一の操作が直接実行されないことTimer
です。操作はそこからのみ開始され、非同期で実行されます。
TimerTask
そのため、実行が前の操作が完了する前に新しい操作を開始すると、重複が発生する可能性があります。代わりに、重複が発生した場合は、前の実行の終了を待って、前の実行が完了したらすぐに新しい操作を開始したいと考えています。
この動作を取得するための最良の実装は何ですか? タイマーから別のサポートに切り替える必要がありますか? これは Android 環境なので、util.concurrent
Spring Quartz やその他の特定のフレームワークに基づくものよりも、Java 標準 ( ) または Android ベースの実装を好みます。