私はこの問題を抱えています:
1つのオブジェクトにアクセスするスレッドがいくつかありますsynchronized(Object) { ... }
ただし、次の例外が発生する場合があります。
実行する:java.util.concurrent.RejectedExecutionException
なんで?そして、私はそれをどうすればよいですか?
ありがとう
私はこの問題を抱えています:
1つのオブジェクトにアクセスするスレッドがいくつかありますsynchronized(Object) { ... }
ただし、次の例外が発生する場合があります。
実行する:java.util.concurrent.RejectedExecutionException
なんで?そして、私はそれをどうすればよいですか?
ありがとう
その例外は、によって発生することを意図していますExecutor.execute
-同期ブロック内のオブジェクトにアクセスするだけでそれを見るべきではありません。
スタック トレースの残りの部分を調べて、エラーが発生している場所を正確に特定し、メッセージを見て、エラーが発生した理由についてさらに詳しい情報が得られるかどうかを確認してください。Todd がコメントしたように、それは通常、ワーク キューがいっぱいになったようなものが原因です。
たとえば、ThreadPoolExecutor
実行するタスクをバッファリングするためにキューが使用され、それ以上のアイテムの受け入れを拒否した場合、この例外がスローされます。これは通常、システムが過負荷になっているか、executor の設定が間違っていることを示しています。