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

我有一个int数组的数组。

DataArray[X][Y] 

我想为每个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); } }); } 

任何帮助,将不胜感激

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

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

使用但未在内部类中声明的任何局部变量,forms方法参数或exception处理程序参数必须声明为final。 必须在内部类的主体之前明确地分配在内部类中使用但未声明的任何局部变量。