并行矩阵乘法变量错误java

Parallel Matrix Multiplication variable error java

我是按照某人的指导使用我的代码进行的,到目前为止,现在卡住了。

他告诉我并行化算法以在单独的线程中计算矩阵 C 的每个单元格。

我试过按照他说的去做,但遇到了一些错误。我不熟悉 ExecutorService 池,所以我希望我做对了。

第 38 行出现错误,指出无法从静态上下文中引用非静态变量。

有人可以帮我吗?

   import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public class Matrix1 {

   public final static int N = 4; //Random size of matrix

    public static void main(String[] args) throws InterruptedException {

    long startTime = System.currentTimeMillis();


        //Create and multiply matrix of random size N.   
        double [][] a = new double [N][N];
        double [][] b = new double [N][N];
        double [][] c = new double [N][N];

        int i,j,k;

        for(i = 0; i < N ; i++)
            for(j = 0; j < N ; j++){
                a[i][j] = i + j;
                b[i][j] = i * j;
            }


                 ExecutorService pool = Executors.newFixedThreadPool(1);
                for(i = 0; i < N; i++)
                     for(j = 0; j < N; j++){
                c[i][j] = 0;
                for(k = 0; k < N; k++)
                    c[i][j] += a[i][k] * b[k][j]; //C matrix calculated from a and B matrices.

            }  
                        pool.submit(new Multi(N,i,j,a,b,c));
                        pool.shutdown();
                        pool.awaitTermination(1, TimeUnit.DAYS);

                 long endTime = System.currentTimeMillis();
                  System.out.println("Calculation completed in " +
                             (endTime - startTime) + " milliseconds");

    }
static class Multi implements Runnable {
    final int N;
    final double [][] a;
    final double [][] b;
    final double [][] c;
    final int i;
    final int j;

        public Multi(int N, int i, int j, double[][] a, double[][] b, double[][] c){
        this.N=N;
        this.i=i;
        this.j=j;
        this.a=a;
        this.b=b;
        this.c=c;
        }


    @Override
    public void run() {
        for(int k = 0; k < N; k++) c[i][j] += a[i][k] * b[k][j];
    }

}

}

Multi 的声明中添加 static 关键字:

static class Multi implements Runnable {