[解決済み] RejectedExecutionExceptionの原因は何ですか?
質問
tomcatサーバー(+liferay)でこの例外が発生します。
java.util.concurrent.RejectedExecutionException
私のクラスはこのようなものです。
public class SingleExecutor extends ThreadPoolExecutor {
public SingleExecutor(){
super(1, 1,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>());
}
@Override
public void execute(Runnable command) {
if(command instanceof AccessLogInsert){
AccessLogInsert ali = (AccessLogInsert)command;
ali.setConn(conn);
ali.setPs(ps);
}
super.execute(command);
}
}
この行で例外が発生します
super.execute(command);
このエラーは、キューが満杯のときに発生する可能性がありますが
LinkedBlockingQueue
のサイズが2^31であり、それほど多くのコマンドが待機していないことが確認されています。
開始時はすべて安定していますが、戦争を再デプロイした後に発生するようになりました。このクラスは戦争の一部ではなく、tomcat/lib の jar に含まれています。
なぜこのようなことが起こるのか、どのように修正すればよいのか、おわかりになりますか。
どのように解決するのですか?
から スレッドプールエクセキュータ JavaDoc (強調)
<ブロッククオート
メソッドで投入された新しいタスク
execute(java.lang.Runnable)
は拒否されます
を実行すると
Executor
がシャットダウンされた場合
のとき、また
Executor
が最大スレッド数とワークキュー容量の両方に有限の境界を使い、飽和している場合にも使用されます。どちらの場合でも、execute メソッドは
RejectedExecutionHandler.rejectedExecution(java.lang.Runnable, java.util.concurrent.ThreadPoolExecutor)
メソッドを呼び出します。
RejectedExecutionHandler
. 4つの定義済みハンドラポリシーが提供されています。
-
デフォルトの
ThreadPoolExecutor.AbortPolicy
で、ハンドラはランタイムRejectedExecutionException
を投げます。 -
で
ThreadPoolExecutor.CallerRunsPolicy
で、execute を呼び出したスレッド自身がタスクを実行します。これは、新しいタスクが提出される速度を遅くする、簡単なフィードバック制御機構を提供します。 -
では
ThreadPoolExecutor.DiscardPolicy
では、実行できないタスクは単にドロップされます。 -
では
ThreadPoolExecutor.DiscardOldestPolicy
において、エクゼキュータがシャットダウンされない場合、 ワークキューの先頭にあるタスクはドロップされ、その後実行がリトライされます (これは再び失敗し、これを繰り返す可能性があります)。
他の種類の定義や使用も可能です。
RejectedExecutionHandler
クラスを定義して使用することができます。これを行うには、特にポリシーが特定の容量またはキューイングポリシーの下でのみ動作するように設計されている場合、いくつかの注意が必要です。
おそらく、戦争のリロードは
Executor
. 関連するライブラリを戦争の中に入れてみて、Tomcat の
ClassLoader
がアプリを正しく再読み込みする可能性が高くなります。
関連
-
テストが空であるかどうかを判断するためのオプションの処理
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] JavaBeanとは何ですか?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] プロセスとスレッドの違いは何ですか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] シンクロナイズド」とはどういう意味ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
NullPointerException - java.lang.
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
プロジェクトの依存関係を解決できない。
-
ブートレイヤーの初期化中にエラーが発生しました java.lang.module.FindException: モジュールが見つかりません
-
ajax コミット リソースの読み込みに失敗しました: サーバーはステータス 400 で応答しました ()
-
Uncaught ReferenceError: は定義されていません。
-
ジャバアレイ
-
Javaがテキストファイルを読み込む
-
API の戻り値を処理するために ResponseEntity を使用する
-
eclipse 実行 Java、エラー: 選択を起動できず、レシーバーもありません。