访问内部类中的for循环变量

use*_*455 5 java arrays multithreading

我有一个int数组的数组.

DataArray[X][Y]
Run Code Online (Sandbox Code Playgroud)

我想为每个X创建一个线程,它沿Y迭代.我无法弄清楚如何将适当的X值传递给每个线程.

基本上我希望能够做到

ExecutorService threadPool = Executors.newFixedThreadPool(10);
for (int i = 0; i < X; i++) {
  threadPool.submit(new Runnable() {
    public void run() {         
      Function_to_run(i);
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激

CKi*_*ing 7

只能final在method-local-anonymous-inner-class中捕获值.您需要更改代码,如下所示:

for (int i = 0; i < X; i++) {
        final int index = i;
        threadPool.submit(new Runnable() {
             public void run() {

                  Function_to_run(index);

         }
     });
Run Code Online (Sandbox Code Playgroud)