诊断为什么两个Java线程挂起

时间:2012-10-19 11:29:41

标签: java multithreading concurrency deadlock

试图理解我的应用程序挂起,它一直运行良好然后挂起。 然后我附加了Yourkit Profiler,它突出显示了一段时间没有改变并且似乎已经挂起的两个线程。

有趣的是,两个线程都执行相同的任务但是在不同的数据上,但是这个方法只是一个cpu密集型任务,它不共享数据,执行I / O或连接到其他任何东西。

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

因此,考虑到这一点,我无法理解可能导致他们停止的原因

两个线程都作为ExecutorService的一部分运行

我应该采取什么方法来解决这个问题。

更新

正如Glen猜测的那样,这个问题与线程完全无关。只是他们碰巧遇到了同样的问题,如果提供了一组特定的数据,他们调用的代码可能会进入递归循环。另一张海报给出的一个好的暗示是检查分析器是否线程处于Runnable或Waiting状态,只有当它们处于等待状态时它们才真正陷入僵局。

1 个答案:

答案 0 :(得分:0)

我的猜测是你在那里有一个无限循环。