1

私の本来の目的は、単純にループしてフラグをチェックすることなく、xx TimeUnit ごとにコードのセクションを実行することです。私はいくつかの調査を行い、2つの解決策を見つけました:

  1. Timer+ TimerTask- タイマーが一時停止したら、別のタイマーを新しくする必要があります。TimerTask も同様です。

  2. ScheduledThreadPoolExecutor+ Runnable- 前の組み合わせと同じ。しかし、これは強化されたものだと言う人もいます。しかし、前に述べた機能はまだ提供されていません。

今、私はこの問題を解決するエレガントな方法を探しています。多分私はロックに集中する必要がありますか?

4

1 に答える 1

2

ScheduledExecutorService を使用し、Future.cancel() を使用して中断します。および scheduleAtFixedRate を使用して再度開始します。

期間を変更したい場合は、中断されていないことを前提として、キャンセルし、新しい期間で再度追加してください。

この詳細を隠したい場合は、suspend()、resume()、および setPeriod() メソッドを使用してラッパーを作成できます。

于 2012-04-27T08:22:51.087 に答える