2012-10-19 32 views
-1

試圖讓我的應用程序掛的感覺,一切都運行良好,便掛斷。 然後我附上了Yourkit Profiler,它突出顯示了兩個線程,這些線程在一段時間內沒有改變,並且似乎掛起了。診斷爲什麼是兩個Java線程掛

有趣的是兩個線程都執行相同的任務,但對不同的數據,但該方法簡單這是不共享數據,執行I/O或連接到其他任何一個CPU密集型任務。因此,考慮到這一點

public int[][] computeAssignments(float[][] matrix) 

我不明白這可能是導致他們只停留

兩個線程都運行作爲一個ExecutorService

我應該採取什麼方法來解決這個的一部分。

更新

由於格倫猜到了問題竟然是完全無關的線程。只是它們碰巧遇到了同樣的問題,如果提供了一組特定的數據,它們所調用的代碼可能會進入遞歸循環。另一張海報給出的一個很好的提示是檢查分析器是否線程處於Runnable或Waiting狀態,只有當它們處於等待狀態時,它們實際上是否會死鎖。

+5

你意識到這是遠遠不夠的信息來診斷問題,對不對? – cHao

+0

您是否嘗試過使用任何調試工具進行調試?一行一行地嘗試,並且您會意識到確切的問題在哪裏引起。 –

+0

每次都會發生嗎?它是確定性的嗎? – biziclop

回答

0

我的猜測是,你有一個無限循環出現。

+1

是的,我添加了一些調試,以查看paramteers傳遞給方法和lopp的創新,但如果運行45分鐘後它還沒有失敗 –

+0

Hava設法確認代碼可以卡住一個循環給定一個特定的矩陣,並添加了代碼來處理這個問題。 –