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

时间:2015-05-17 15:02:40

标签: java arrays multithreading

我有一个int数组数组。

override func viewDidLoad() {
    super.viewDidLoad()
    self.table.dataSource = self
    self.table.delegate = self
    self.table.tableHeaderView = self.searchController.searchBar

    self.definesPresentationContext = true
    self.searchController.searchBar.sizeToFit()
    self.searchController.dimsBackgroundDuringPresentation = false

    self.searchController.searchResultsUpdater = self
    self.searchController.delegate = self
}

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

基本上我希望能够做到

DataArray[X][Y]

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:7)

只能在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);

         }
     });

答案 1 :(得分:0)

使用但未在内部类中声明的任何局部变量,形式方法参数或异常处理程序参数必须声明为final。任何在内部类中使用但未声明的局部变量必须在内部类的主体之前明确赋值。