ある(ランダムな)時間の後にフリーズするswingアプリケーションがあります。フリーズした後、10秒ごとに5つのスレッドスナップショットを作成しましたが、それらにはすべてまったく同じ行が含まれています。
"AWT-EventQueue-0" prio=6 tid=0x0000000009949000 nid=0x7bec waiting on condition [0x000000000ebbc000]
java.lang.Thread.State: RUNNABLE
at java.math.BigInteger.valueOf(Unknown Source)
at java.math.BigDecimal.inflate(Unknown Source)
at java.math.BigDecimal.add(Unknown Source)
at uk.co.xx.xxx.xxxx.XXX$4.get(XXX.java:171)
スレッドダンプ内の他のスレッドはXXX.javaにないことに注意してください。対応するコード行(XXX.java:171)はやや不快に見えます:
a = a.add(b.multiply(c, MATH_CONTEXT), MATH_CONTEXT);
どこ:
a
、b
およびc
はローカルBigDecimal
変数です。MATH_CONTEXT
変数でありpublic final static
、XXX.java内でのみアクセスされます
私の質問(それらのいずれかに答えることは大きな助けになるでしょう)
- これはデッドロックまたは活性の問題の証拠ですか(スレッドは進行していないようですが、
RUNNABLE
状態にあります)? - これがフリーズの原因である可能性が高いですか、それとも別の場所を探す必要がありますか?
- 問題を解決するための次のステップは何でしょうか?