2

假设我有一个 java 方法(例如数组添加)

public void mymethod() {   
  { 
   //i have some global arrays named a, b & c
  for(int i=0;i<10;i++)
     a[i]=b[i]+c[i];     //no dependency exists
  }   

在这里,如果我将此循环转换为 2 个单独的循环并使用两个线程运行。结果将是准确的。但在下面给出的情况下

public void mymethod() {   
  { 
   //i have some global arrays named a, b
  for(int i=0;i<10;i++)
     a[i]=b[i]+a[i-1];           //a[i] dependent on a[i-1]
  }   

a[i] 的下一个值取决于 a[i-1] 的前一个值。因此循环中存在依赖关系,并且不能仅通过将循环分成两个单独的循环来并行化。

所以我的问题;

是否有任何 JAVA 类/工具/包等可以在循环中检查这种类型的依赖关系

4

1 回答 1

0

您可以查看JDepend或找到任何其他 java 代码分析工具。

于 2013-03-03T10:18:24.403 回答