试图理解我的应用程序挂起,它一直运行良好然后挂起。 然后我附加了Yourkit Profiler,它突出显示了一段时间没有改变并且似乎已经挂起的两个线程。
有趣的是,两个线程都执行相同的任务但是在不同的数据上,但是这个方法只是一个cpu密集型任务,它不共享数据,执行I / O或连接到其他任何东西。
public int[][] computeAssignments(float[][] matrix)
因此,考虑到这一点,我无法理解可能导致他们停止的原因
两个线程都作为ExecutorService的一部分运行
我应该采取什么方法来解决这个问题。
更新
正如Glen猜测的那样,这个问题与线程完全无关。只是他们碰巧遇到了同样的问题,如果提供了一组特定的数据,他们调用的代码可能会进入递归循环。另一张海报给出的一个好的暗示是检查分析器是否线程处于Runnable或Waiting状态,只有当它们处于等待状态时它们才真正陷入僵局。
答案 0 :(得分:0)
我的猜测是你在那里有一个无限循环。