我有一個swing應用程序,它在一些(隨機)時間後凍結。我已5個快照每10秒它凍結後,他們都包含這些完全相同的線路:線程轉儲分析(AWT-EventQueue可運行但等待條件)
"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
狀態)? - 這是凍結的可能原因還是我應該找別的地方?
- 解決問題的下一步是什麼?
是行171同步(方法或塊級別)? –
@ejb_guy no - 圍繞該部分代碼不進行同步。 – assylias