アプリケーションがハングしていることを理解しようとすると、すべて正常に実行されてからハングしました。次に、しばらく変更されておらず、ハングしているように見える2つのスレッドを強調表示するYourkitProfilerを添付しました。
興味深いのは、両方のスレッドが同じタスクを実行していたが、異なるデータに対して実行していたことです。ただし、この方法は、データの共有、I / Oの実行、または他の何かへの接続を行わない、CPUを集中的に使用するタスクです。
public int[][] computeAssignments(float[][] matrix)
だからこれを念頭に置いて、私は彼らがただ停止する原因となっている可能性があるものを理解することはできません
両方のスレッドはExecutorServiceの一部として実行されます
これを解決するには、どのようなアプローチを取る必要がありますか。
アップデート
グレンが推測したように、問題はスレッドとはまったく関係がないことが判明しました。両方がたまたま同じ問題にぶつかっただけで、特定のデータセットが提供された場合、呼び出していたコードが再帰ループに入る可能性があります。別の投稿者が提供した良いヒントは、スレッドが実行可能状態か待機状態かをプロファイラーでチェックインすることでした。待機状態にある場合にのみ、実際にデッドロックが発生します。