2012-12-14 2 views
11

java.util.TimerオブジェクトにはisCancelledメソッドがないのはなぜですか?Javaタイマがキャンセルされているかどうかを調べる

キャンセルされていない場合はタスクをスケジュールし、キャンセルされている場合は(同じスレッド上で)直接実行したいと考えています。

タイマが既にキャンセルされている場合に発生する可能性のあるIllegalStateExceptionをキャッチする唯一のオプションはありますか? (それはIllegalStateExceptionをキャッチするのが間違っていると感じる)。

答えて

14

Timerを使用してもよろしいですか?代わりにExecutorServiceを使用してください。これはisShutdownで、ブートには他にも利点があります。 Java 5の一般的な推奨事項は、TimerExecutorServiceに置き換えたものです。

スケジュールされたエグゼキュータサービス専用のScheduledExecutorServiceインターフェイスがあります。メソッドExecutors.new...のいずれかを使用してインスタンス化します。

+1

これは、 'Timer'クラスが多かれ少なかれ非難されているということですか? –

+3

はい、あなたはそれを言うことができます。それがあなたの請求書に合っているなら、それを使ってください。そうでない場合は、 'ExecutorService'に移動して、決して振り返らないでください。 2番目の考えでは、そのアドバイスさえ危険です: 'Timer'で始まってプロジェクトが成長すると、' ExecutorService'で始まったことを後悔するかもしれません。 –

+1

廃止予定?いいえ、多くの作業には不適切です。 http://stackoverflow.com/questions/2213109/java-util-timer-is-it-deprecated –

関連する問題