1

アプリケーションで定期的な操作を実行する必要があります。たとえば、 periodTです。今のところ、私は使用してTimer.scheduleAtFixedRate(TimerTask, 0, T)います。ここで、単一の操作の重複を避けたいと考えています (場合によっては、単一の操作に よりも時間がかかることがありますT)。単一のスレッドを使用して操作を実行する実装を読んだTimerので、標準的な状況では重複はありません。TimerTask問題は、私の場合、渡された toによって単一の操作が直接実行されないことTimerです。操作はそこからのみ開始され、非同期で実行されます。

TimerTaskそのため、実行が前の操作が完了する前に新しい操作を開始すると、重複が発生する可能性があります。代わりに、重複が発生した場合は、前の実行の終了を待って、前の実行が完了したらすぐに新しい操作を開始したいと考えています。

この動作を取得するための最良の実装は何ですか? タイマーから別のサポートに切り替える必要がありますか? これは Android 環境なので、util.concurrentSpring Quartz やその他の特定のフレームワークに基づくものよりも、Java 標準 ( ) または Android ベースの実装を好みます。

4

1 に答える 1

0

これを達成するために使用できますExecutors.newScheduledThreadPool(1)。よりもはるかに使いやすいですTimer{,Task}

于 2013-07-03T10:28:44.280 に答える