[解決済み】Java TimerとExecutorServiceの比較?
2022-04-15 08:32:04
質問
を使用してタスクをスケジュールするコードがあります。
java.util.Timer
. いろいろ見ていたら
ExecutorService
も同じことができます。そこでこの質問ですが、あなたは
Timer
と
ExecutorService
を使用してタスクをスケジュールする場合、どちらを使用するのが良いのでしょうか?
また、誰かが
Timer
というクラスで、何か問題が発生した場合は
ExecutorService
が解決してくれました。
どのように解決するのですか?
によると Java並行処理の実際 :
-
Timer
は、システムクロックの変化に敏感である可能性があります。ScheduledThreadPoolExecutor
はない。 -
Timer
は実行スレッドが1つしかないため、長時間実行するタスクは他のタスクを遅らせることができます。ScheduledThreadPoolExecutor
は、任意の数のスレッドを設定することができます。さらに、作成されたスレッドを完全に制御することができます。ThreadFactory
). -
でスローされるランタイム例外は
TimerTask
はその1つのスレッドを殺し、その結果Timer
dead :-( ...つまり、スケジュールされたタスクはもう実行されません。ScheduledThreadExecutor
は、実行時例外を捕捉するだけでなく、必要に応じて例外を処理することができます。afterExecute
メソッドからThreadPoolExecutor
). 例外を発生させたタスクはキャンセルされますが、それ以外のタスクは継続して実行されます。
もし
ScheduledThreadExecutor
の代わりに
Timer
は、そうしてください。
もうひとつ...一方
ScheduledThreadExecutor
は Java 1.4 ライブラリでは利用できませんが
JSR166のバックポート(
java.util.concurrent
) を Java 1.2, 1.3, 1.4 に移植する。
を持つ。
ScheduledThreadExecutor
クラスがあります。
関連
-
[解決済み] ボタンでTextFieldをクリアする(Java)
-
[解決済み] Application startメソッドで例外が発生する。JavaFx 11
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Javaで拡張子なしのファイル名を取得する方法は?
-
[解決済み] Java Genericメソッドをstaticにするには?
-
[解決済み] javacが「using unchecked or unsafe operations」という警告を出す原因は何ですか?
-
[解決済み] java.lang.ClassNotFoundException: クラス com.ibm.db2.jcc.DB2Driver が Worklight プラットフォームまたはプロジェクトに見つかりませんでした。
-
[解決済み] 型の不一致:ArrayListからListへの変換ができない
-
[解決済み] publicId と systemId の間に空白が必要です。
-
[解決済み] javaでメソッドを呼び出すプログラムのエラー修正
-
[解決済み] IntegerからBigIntegerへの変換
-
[解決済み] Javaコンパイラーエラー:ステートメントではありません
-
[解決済み] x--やx++はここで何をするのですか?